यदि आपको MyClass
विधियों के बाहर से name
तक पहुंचने की आवश्यकता है, तो आपको इसे एक्सेस करने के तरीकों को परिभाषित करने की आवश्यकता है। आप (NSString*) name
और - (void) setName:(NSString*) newName
नामक विधियों को लिख सकते हैं, लेकिन गुणों को परिभाषित करना और उन्हें संश्लेषित करना आसान है।
MyClass.h में, आप एक संपत्ति को परिभाषित करते हैं। तार के लिए, आप आमतौर पर उन्हें copy
बनाने:
@interface MyClass : NSObject
@property (copy) NSString* name;
@end
में MyClass.m, आप अभी भी अपने इंटरफेस घोषणा, इवर साथ उपयोग करें:
@interface MyClass() {
NSString *name;
}
@end
हालांकि, अगर आप भी के संश्लेषण के लिए की जरूरत आपकी नई संपत्ति यह पुन: प्राप्त करने और नाम स्थापित करने के लिए तरीकों बनाता है:
@implementation MyClass
@synthesize name = name;
@end
एक सम्मेलन के रूप में, यह प्रारंभ या इवर के अंत में एक अंडरस्कोर डाल करने के लिए है, इसलिए इंटरफ़ेस में आप NSString *_name;
होता आम है, और में कार्यान्वयन आपके पास @synthesize name = _name
होगा। जब आप संपत्ति का मतलब रखते हैं तो यह गलती से इवर का उपयोग करने से बचने में मदद करता है।
अब आप अपने नाम संपत्ति का उपयोग कर सकते हैं:
MyClass me = [[[MyClass alloc] init] autorelease];
[me setName:@"My name"];
NSLog(@"Name = %@", [me name]);
ऑब्जेक्टिव-सी गुण भाषा का एक शक्तिशाली सुविधा हैं, लेकिन वे कुछ quirks आप सीखना चाहिए है। "उद्देश्य-सी", "गुण" और "संश्लेषण" के कुछ संयोजन के लिए वेब खोज आज़माएं।
यदि आपके पास अभी भी कंपाइलर त्रुटियां हैं, तो कृपया अपने कोड के हिस्से के साथ अपना प्रश्न संपादित करें जहां आप name
एक्सेस करते हैं।
ओपी डीबगर में चर का उपयोग करने के तरीके के बारे में पूछ रहा है। इसे संकलित करने के लिए कैसे नहीं मिलता है। मेरे साथ भी वही दिक्कत है। यह जवाब सहायक नहीं है। – rrrus