2013-02-19 27 views
8
@interface Connections() 
{ 
    static Connections *this; 
} 
@end 

मीटर फ़ाइल में कोड की ऊपर टुकड़ा फेंकने संकलक त्रुटिउद्देश्य सी - घोषणा त्रुटि - समझाने

प्रकार नाम भंडारण वर्ग

निर्दिष्ट करने पर अनुमति नहीं है कृपया एक ही समय जब

स्थिर

कुंजी शब्द हटा दिया गया है यह अच्छी तरह से काम करता है - जो इतना स्पष्ट है। उद्देश्य: मैं "कनेक्शन" उदाहरण स्थिर और निजी चाहता हूं।

यह व्यवहार क्यों है, कृपया मदद करें।

उत्तर

18

आप उद्देश्य-सी कक्षाओं में कक्षा-स्तर चर घोषित नहीं कर सकते हैं; इसके बजाय आपको उन्हें कार्यान्वयन फ़ाइल में "छिपाने" की आवश्यकता होती है, अक्सर उन्हें static -स्कोप देकर उन्हें बाहरी रूप से एक्सेस नहीं किया जा सकता है।

Connections.m:

#import "Connections.h" 

static Connections *_sharedInstance = nil; 

@implementation Connections 

... 

@end 

और अगर यह एक सिंगलटन है, आप आमतौर पर पहली बार उपयोग पर सिंगलटन बनाने के लिए एक वर्ग स्तरीय एक्सेसर को परिभाषित:

+ (Connections *)sharedInstance 
{ 
    if (_sharedInstance == nil) 
    { 
     _sharedInstance = [[Connections alloc] init]; 
    } 
    return _sharedInstance; 
} 

(और आप करेंगे .h फ़ाइल में घोषणा जोड़ने की आवश्यकता है):

+ (Connections *)sharedInstance; 
+0

जिसका अर्थ है ओबीजेसी कक्षाएं केवल अस्वीकार कर सकती हैं। इवर का, क्या यह सही है? – Futur

+1

@ फ़ुटूर हां, यह सही है। – trojanfoe

+0

आपको बहुत धन्यवाद :) – Futur