我读过许多关于在init或dealloc方法中永远不要使用点符号表示法的片段。然而,我似乎从未找到为什么这样做的原因。有一篇帖子提到这与KVO有关,但没有更多的解释。
@interface MyClass : NSObject {
SomeObject *object_;
}
@property (nonatomic, retain) SomeObject *object;
@end
这个实现很糟糕吗?
@implementation MyClass
@synthesize object = object_;
- (id)initWithObject:(SomeObject *)object {
if (self = [super init]) {
self.object = object;
}
return self;
}
@end
但这是好的吗?
@implementation MyClass
@synthesize object = object_;
- (id)initWithObject:(SomeObject *)object {
if (self = [super init]) {
object_ = [object retain];
}
return self;
}
@end
在init中使用点符号的缺陷是什么?