ivar ve mülkiyet farklı şeylerdir olduğu daha net yapmak için bir seçenektir.
Sınıfı harici kodlamak için özelliği kullandığı için bir fark yoktur.
Sınıfın kendisinin uygulanmasındaki kod için, ivar mülkün yerine kullanıldığında bunu daha açık hale getirebilir.
@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
ve şimdi Ivar ve mülk için farklı bir ad kullanarak: Örneğin
, biz NSNumber nesnesi için bir ivar/özelliği vardır ki konsensüs üzerinde yok
@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 'yerine' ivar 'kullanılmakta olduğunu gördüm, ama daha iyi göründükleri için gerçekten bir argüman oluşturamıyorum ... –