2012-10-21 19 views
6

इसे एक नए चर (प्रकार एनएसएआरएआरई) के साथ एक श्रेणी बनाने की आवश्यकता है।उद्देश्य-सी में श्रेणी में एक चर जोड़ने के लिए कैसे?

OriginalClass + Extension.h:

@interface OriginalClass (Extension) { 
    NSArray *_array; 
} 

@property (nonatomic, retain) NSArray *array; 

@end 

लेकिन मैं त्रुटि मिली: Cannot declare variable inside @interface or @protocol

कृपया समस्या को हल करने में मदद करें।

उत्तर

4

जैसा कि दूसरे ने कहा है, आप नहीं कर सकते। हालांकि H2CO3 ने इंगित किया है, आप associative references का उपयोग कर सकते हैं। Apple Documents पर:

Note that a category can’t declare additional instance variables for the class; it includes only methods. However, all instance variables within the scope of the class are also within the scope of the category. That includes all instance variables declared by the class, even ones declared @private.

आप जुड़े वस्तु के लिए जाना चाहते हैं, आप this जवाब उपयोग कर सकते हैं। इसके अलावा, आप ओले बेगमैन द्वारा this पोस्ट का उपयोग कर सकते हैं।

+0

कूल समाधान, धन्यवाद! – Dmitry

+0

@Altaveron एक ही कामकाज है कि H2CO3 प्रस्तावित, पहले ... (StackOverflow अजीब है :-)) – aleroot

+0

इस उत्तर में सटीक कोड का एक लिंक है। – Dmitry

2

सरल: आप किसी श्रेणी का उपयोग कर कक्षा में आवृत्ति चर जोड़ नहीं सकते हैं।

आप अतिरिक्त डाटा स्टोर करने की जरूरत है: का उपयोग associated objects.

+0

लेकिन डेटा कैसे स्टोर करें? – Dmitry

+1

@Altaveron शायद संबंधित वस्तुएं आपकी मदद कर सकती हैं। (मेरा संपादित उत्तर देखें।) –

+1

एक श्रेणी आपको मौजूदा कक्षा में विधियों को जोड़ने की अनुमति देती है। अवधि। Http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html – kamprath

3

आप नहीं, एक वर्ग अतिरिक्त उदाहरण चर की घोषणा नहीं कर सकते हैं कर सकते हैं ...

संदर्भ: here

+0

कक्षा में नया डेटा चर जोड़ने के लिए मुझे क्या उपयोग करना चाहिए? – Dmitry

+0

आपको – aleroot

+0

हालांकि उप-वर्ग करना होगा, मैं संशोधित कक्षा का मूल वर्ग नाम के साथ उपयोग करना चाहता हूं। – Dmitry