Я прочитал несколько фрагментов, в которых упоминается, что вы никогда не должны использовать точечные обозначения в ваших методах init или dealloc. Тем не менее, я не могу понять, почему. В одном посте попутно упоминалось, что это имеет отношение к КВО, но не более.
@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?