मैंने कई स्निपेट पढ़े हैं जो उल्लेख करते हैं कि आपको कभी भी अपने 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 के अंदर डॉट-नोटेशन का उपयोग करने के नुकसान क्या हैं?
ऐसा लगता है कि दूसरे उदाहरण में आपको object_ = [ऑब्जेक्ट बरकरार रखना चाहिए]; – Vladimir
तय, जल्दी लिखित उदाहरणों के साथ परेशानी। ;) – MarkPowell