2011-01-18 17 views
6

मुझे उद्देश्य-सी में एक उदाहरण विधि से कक्षा/सदस्य चर का उपयोग करने के तरीके को समझने में कुछ मदद चाहिए।उद्देश्य-सी, सदस्य चर और वर्ग चर

कोई भी स्निपलेट/उदाहरण अत्यधिक सराहना की जाती है।

धन्यवाद।

उत्तर

15

उद्देश्य-सी में कक्षा चर नहीं है, और जिसे आप सदस्य चर कहते हैं उसे एक आवृत्ति चर कहा जाता है। इंस्टेंस वैरिएबल को किसी इंस्टेंस विधि से नाम से संदर्भित किया जा सकता है। और यदि आपको कक्षा चर के व्यवहार की आवश्यकता है, तो आप इसके बजाए फ़ाइल-स्तरीय स्थिर का उपयोग कर सकते हैं।

यहाँ एक बहुत ही त्वरित नमूना है:

Foo.h

@interface Foo : NSObject { 
    NSString *foo; 
} 
@end 

Foo.m

static NSString *bar; 

@implementation Foo 
- (void)foobar { 
    foo = @"test"; // assigns the ivar 
    bar = @"test2"; // assigns the static 
} 
@end 
+0

और आप इसे पसंद का उपयोग करेगा: फू * myFoo = [[ फू alloc] init]; [myFoo foobar]; [myFoo रिलीज]; – nacho4d

+0

आपके तेज राहत के लिए धन्यवाद, मेरा विचार है कि कक्षा एनएसएमयूटेबल डिक्शनरी है कि ऑब्जेक्ट शेयरों के सभी उदाहरण, क्या यह डिज़ाइन का सही तरीका होगा या मुझे कुछ याद आ रहा है? –

+1

यदि आपको एक साझा शब्दकोश की आवश्यकता है, तो यह ठीक काम करता है। आप एनएसएमयूटेबल डिक्शनरी के लिए .m में फ़ाइल-स्तरीय स्थैतिक चाहते हैं, और आप इसे अपने 'प्रारंभिक' विधि में बनाना चाहते हैं (यह सुनिश्चित करने के लिए कि किसी भी उदाहरण तक पहुंचने से पहले यह मौजूद है)। यदि आपको कभी भी मुख्य वस्तु के इस ऑब्जेक्ट को स्पर्श करने की आवश्यकता है, तो आपको इसे एक्सेस करने के लिए एक जीसीडी प्रेषण कतार का उपयोग करना चाहिए - अन्यथा, बस आगे बढ़ें और इसे सामान्य की तरह उपयोग करें। ध्यान दें कि आपको चर में एक स्वामित्व वाली उदाहरण चिपकाना होगा, उदा। '[[एनएसएमयूटेबल डिक्शनरी आवंटित] init]'। और इसे कभी भी जारी न करें (क्योंकि कक्षा स्वयं कभी नहीं जाती)। –

संबंधित मुद्दे