어느 개발자의 한적한 공간 살아나가면서 저지른 이야기

IBOutlet의 변화

예전에는 속성과 아웃렛에 사용하는 내부 인스턴스 변수를 모두 선언했다. 그 당시 속성은 오브젝티브-C 언어에 새로 추가된 구조체였으며, 속성을 선언하려면 다음과 같이 대응되는 인스턴스 변수도 함께 선언해야 했다.

@interface MyViewController : UIViewController {
    IBOutlet UIButton *myButton;
}
@property (nonatomic, retain) UIButton *myButton;
@end

당시에는 인스턴스 변수 앞에 IBOutlet를 표기했었다.

이후 IBOutlet 키워드를 인스턴수 변수 앞에 두는 관행에서 벗어나 다음과 같이 속성 선언 내 IBOutlet 키워드를 배치하는 것을 표준으로 지정했다.

@property (nonatomic, retain) IBOutlet UIButton *myButton;

최근 애플이 GCC에서 LLVM으로 기본 컴파일러를 바꿈에 따라 이제 속성에 인스턴스 변수를 선언하는 일이 불필요해졌다. LLVM은 대응되는 인스턴스 변수가 없는 속성을 찾아 내면 인스턴스 변수를 자동으로 생성해준다. 이 책에서는 아웃렛에 대해 더이상 인스턴스 변수를 선언하지 않는다.

iOS 개발 #iOS #IBOutlet