आप वास्तव में एक चर निर्धारित नहीं किया है, आप केवल एक संपत्ति (जो परोक्ष एक चर कि निजी है परिभाषित करता है) को परिभाषित किया। और चूंकि संपत्ति सिर्फ विधि है, आपको डॉट सिंटैक्स की आवश्यकता है। ध्यान दें कि self.property
[self property]
जैसा ही है।
इसे ठीक करने के लिए, एक चर निर्दिष्ट करें। मैं आपको एक उदाहरण दूंगा जहां चर के पास संपत्ति से अलग नाम है। अधिकांश लोगों ने दोनों के लिए एक ही नाम चुना लेकिन मुझे उन्हें अलग करना पसंद है इसलिए मैं तुरंत देखता हूं कि कौन सा मतलब है।
// a.h
@interface MyClass : NSObject {
// Instance variables are "protected" by default, except if you
// use @private or @public.
Object *myObjectVar;
}
@property (nonatomic, retain) Object *myObject;
@end
// a.m
@implementation MyClass
@synthesize myObject = myObjectVar;
@end
// b.h
@interface AnotherClass : MyClass
@end
// b.m
@implementation AnotherClass
- (void) someMethod {
// works
Object *obj = myObjectVar;
// works
obj = self.myObject;
// the same as self.myObject
obj = [self myObject];
}
@end
नोट अंतर है जब आप आवंटित : यदि आप अपने चर वस्तु स्वचालित रूप से नहीं बनी रहती है करने के लिए आवंटित।
myObjectVar = someObject; // not retained, old object not released!
self.myObject = someObject; // old object released, new object retained
[self setMyObject:someObject]; // same as the line above
संपादित करें:: उल्लेख किया है कि संश्लेषित उदाहरण चर डिफ़ॉल्ट से निजी हैं के रूप में @Jason कोको द्वारा नोट लेकिन यह अगर आप संपत्ति का उपयोग बनी रहती है। और @NSGod सही है कि सामान्य उदाहरण चर संरक्षित डिफ़ॉल्ट रूप से सार्वजनिक रूप से तय किए गए हैं।
यह [केविन Ballard के उत्तर] (http://stackoverflow.com/a/8511046/) द्वारा समझाया गया है [संश्लेषित ivars की दृश्यता क्या है?] (Http://stackoverflow.com/questions/8510464/) कुछ घंटों पहले से। –