के अंदर परिवर्तनीय घोषित नहीं कर सकता है मेरे पास शुरुआत में एक आईओएस ऐप है जो शुरुआत में एक त्रुटि के साथ बनाया गया है। चूंकि स्रोत के लिए शुरू किया गया था टेम्पलेट से निर्माण किया है, इसकी appdelegate.h लगता है:@interface या @protocol
@interface myAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
myViewController *viewController;
}
BOOL myBool; // intended to be globally accessible
NSString *myString; // intended to be globally accessible
@end
मैं कई अन्य मीटर स्रोत फ़ाइलों से myBool और * myString को देखें, वैश्विक चर के रूप में।
एक्सकोड 3.2.6 के नीचे, मुझे संकलन समय पर कोई समस्या नहीं मिल रही है।
3.2.6 पर, एपडेलेगेट में इन "ग्लोबल" चरों को इंगित करते हुए संकलन में चेतावनी दिखाई दी, कह रही है: "@interface या @protocol" के अंदर चर घोषित नहीं किया जा सकता है। चूंकि संकलन या ऐप रनटाइम के दौरान कोई और समस्या नहीं थी, दुर्भाग्य से मैंने इन चेतावनियों पर विचार नहीं किया।
अब, एक्सकोड 4.2 का उपयोग करके, मैं इस स्रोत को संकलित करने में असमर्थ हूं, क्योंकि पूर्व चेतावनियां त्रुटियों को बनाने में बदल गई हैं। वे अलग-अलग .m फ़ाइलों में से प्रत्येक पंक्ति को संदर्भित करते हैं और इंगित करते हैं जहां "वैश्विक चर" का संदर्भ होता है।
क्या इस समस्या को ठीक करने का कोई आसान तरीका है, क्योंकि मैं अभी भी इन चर/संदर्भों को वैश्विक रूप में एक्सेस करना चाहता हूं?
अतिरिक्त प्रश्न: 3.2.6 में किसी भी विचार क्यों कोई चेतावनी XCode v3.2.6 नीचे दिए गए थे, और केवल चेतावनी इस करता है, तो: जब मैं अब तक प्राप्त उत्तरों (आप सभी के लिए धन्यवाद) का मूल्यांकन कर रहा हूँ, एक और सवाल मेरी तरफ से एक वास्तविक त्रुटि है? और कोड अभी भी संकलित क्यों किया गया था और बिना किसी समस्या के चलाया जा सकता था?
सावधानी के एक शब्द के रूप में, इस अर्थ में "वैश्विक" चर आम तौर पर एक बुरा विचार कर रहे हैं ऑब्जेक्ट उन्मुख प्रोग्रामिंग में, क्योंकि वे इलाके और encapsulation के खिलाफ जाते हैं। इस विषय के बारे में ऑनलाइन पढ़ने के बहुत सारे हैं। –