我已经阅读了大量摘录,提到你不应该在你的init或dealloc方法中使用点符号。但是,我似乎无法找出原因。有一篇文章顺带提到它与KVO有关,但没有更多。Objective-C点语法和初始化
@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中使用点符号的缺陷是什么?
看来在第二个例子中你应该写object_ = [object retain]; – Vladimir 2010-06-30 15:13:24
固定,用快速书写的例子麻烦。 ;) – MarkPowell 2010-06-30 15:17:54