바르와 속성이 여러 가지 것을 더 명확하게하는 옵션입니다.
클래스 외부에서 코드를 작성하려면 속성을 사용하므로 차이가 없습니다.
클래스 자체의 구현에 대한 코드의 경우 ivar가 속성과 비교 될 때 명확 해집니다.
@interface MyClass : NSObject {
NSNumber *num;
}
@property (nonatomic, retain) NSNumber *num;
- (void)doSomething;
@end
@implementation MyClass
@synthesize num;
- (void)doSomething {
// set the property, num is properly retained
self.num = [NSNumber numberWithInteger:1];
// accidentally set the ivar, num is NOT retained
num = [NSNumber numberWithInteger:2];
}
@end
지금은 바르 및 속성에 대해 다른 이름을 사용하여 : : 예를 들어
, 우리는의 NSNumber 객체에 대한 바르/속성을 가지고 있다고 합의에 없다
@interface MyClass : NSObject {
NSNumber *i_num;
}
@property (nonatomic, retain) NSNumber *num;
- (void)doSomething;
@end
@implementation MyClass
@synthesize num = i_num;
- (void)doSomething {
// set the property, num is properly retained
self.num = [NSNumber numberWithInteger:1];
// compiler error, there is no ivar named "num"
num = [NSNumber numberWithInteger:2];
// set the ivar, so it needs to be a retained object
i_num = [[NSNumber alloc] initWithInteger:3];
}
@end
'_ivar' 대신'ivar_'이 사용 된 것을 보았습니다. 그러나 더 나은 모습을 제외하고는 실제로 그 인자를 사용할 수 없습니다 ... –