본문으로 바로가기
반응형

Swift가 5까지 나왔지만 아직 가끔 Objective-C 코드를 보거나 수정할 일이 있다.
Objective-C에서 헤깔리는 부분을 간단 요약했다.

Extension

h : Header Files. Header files contain class, type, function, and constant declarations
m : Source files. This is the typical extension used for source files and can cotain both Objective-C and C code.
mm : Source files. A source file with this extension can contain C++ code in addition to Objective-C and C code. This extension should be used only if you actualley refer to C++ classes or features from your Objective-C code

Method

Class Method : +로 시작, Class에서 바로 접근 가능(static과 비슷한 개념, [UIColor redcolor])
Instance Method :  -로 시작, Class를 Instance화 시켜야 사용 가능([[TestClass alloc] init])

Memory Management

MRC(Manual retain-release) : Retain Count로 개발자가 수동으로 관리(alloc, new, retain, release, dealloc 사용)
ARC(Auto Reference Counting) : 컴파일시 컴파일러가 자동으로 적절한 시점에 alloc, retain 등 삽입(strong, weak 사용)

iOS 4 이상부터 ARC가 생겼으므로 현재 MRC는 없다고 봐도 된다.
ARC는 적절한 시점에 Retain Count 관리코드를 삽입하는 것으로 GC(Garbage Collection)과는 다르다(GC는 프로그램 실행 중에 동적으로 감시하고 있다가 더 이상 사용할 필요가 없다고 여겨지는것을 해제시킴)

Property

@propery : 정의시 자동으로 getter, setter 생성 -> 일반적으로 변수 정의시 사용하면 된다
@synthesize : @property를 사용한 것은 단지 컴파일러가 @implementation에서 getter와 setter가 작성되었다는 것을 기대하도록 하는 것 -> @synthesize까지 사용해야 한다 -> xCode 5부터 자동으로 사용(필요 없음)

Property Attribute

- 보통 @property (strong, nonatomic) NSString *name 식으로 strong, nonatomic 사용

atomic : 멀티쓰레딩
nonatomic : 싱글쓰레딩

assign : setter에서 객체를 지정 받을 때 주소값만 지정받음 -> ARC 이후 strong, weak 사용
retain : setter에서 객체를 지정 받을 때 기존것을 release하고 retain -> ARC 이후 strong, weak 사용
copy : setter에서 객체를 지정 받을 때 기존것을 release하고 copy -> ARC 이후 strong, weak 사용

string : 강한 참조, 객체를 소유하여 레퍼런스 카운트를 증가시킴, 뷰 컨트롤러 자체가 해제되지 않는 이상 메모리에 남아 있는다
weak : 약한 참조, 뷰 컨트롤러의 소유가 아니므로 제거하면 메모리에서 바로 해제가 된다. 객체를 소유하지 않고 주소값만을 가지고 있는 포인터 개념

NSString *a = @"123abc";
NSInteger b = [a integerValue];

반응형