Objective-C 에서 Private Property 만들기
Objective-C에서는 property라는 기능으로 instance variable들에 대해 accessor를 자동으로 설정해 줄 수 있다.
#import
#import "CalculatorBrain.h"
@interface CalculatorViewController : UIViewController {
CalculatorBrain *brain;
IBOutlet UILabel *display;
BOOL userIsInTheMiddleOfTypingANumber;
}
- (IBAction)digitPressed:(UIButton *)sender;
- (IBAction)operationPressed:(UIButton *)sender;
@end
위의 헤더 코드(xxx.h)에서 brain이라는 instance variable을 property로 설정해 주기 위해서 구현 코드(xxx.m)의 @implementation부분 전에 @interface 클래스이름()을 써주고 @property 를 이용해 원하는 변수를 private property화 할 수 있다. 예를 들면 다음과 같다.
#import "CalculatorViewController.h"
@interface CalculatorViewController()
@property (readonly) CalculatorBrain *brain;
@end
@implementation CalculatorViewController
...
일반적으로 property와 synthesize를 통해 getter와 setter를 만들어 주는 일은 당연히 public하게 만들어지지만, (애초에 OOP에서 getter와 setter를 만들어주는 이유가 접근할 수 없는 private인 instance variable를 안전하게 이용하게 할 수 있도록 통로를 제공하는 것임) 정말 외부로부터 접근을 막아야 하는 instance variable이지만 property의 장점(.(dot) 표기법)을 누리고 싶을때 사용할 수 있겠다.