2012-04-01 18 views
6

मेरे पास कई नियंत्रकों के साथ एक आईओएस एप्लीकेशन है, प्रत्येक अपनी स्वयं की xib फाइलों के साथ।मैं आईओएस विकास में वैश्विक चर कैसे बचा सकता हूं?

मैं वैश्विक नियंत्रक को ऐसे क्षेत्र के साथ कैसे सेट करूं जो सभी नियंत्रकों को फैलाता है? क्या मुझे NSUserDefaults का उपयोग करना चाहिए और हर बार प्रत्येक दृश्य के लिए डेटा पुनर्प्राप्त करना चाहिए?

उत्तर

7

NSUserDefaults उन चीजों के लिए हैं जिनके लिए दृढ़ता की आवश्यकता होती है, यानी आप ऐप शुरू करने के बीच उन्हें स्टोर करने की योजना बना रहे हैं। अस्थायी चर के लिए, सिंगलटन इंस्टेंस का उपयोग करने पर विचार करें, जैसे MySingleton कक्षा इस उत्तर में चित्रित: https://stackoverflow.com/a/145164/108574

जब आपके पास यह कक्षा है, तो इस कक्षा के अपने अस्थायी चर को property के रूप में आसान पहुंच के लिए रखें। और जब आपको इसे एक्सेस करने की आवश्यकता होती है, तो बस [MySingleton sharedSingleton].variable पर कॉल करें।

अधिक जानकारी के लिए यहां देखें: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

2

आपकी सटीक आवश्यकताओं के आधार पर आप Singleton डिज़ाइन पैटर्न का उपयोग कर सकते हैं ताकि डेटाबेस ऑब्जेक्ट का एक प्रकार बनाया जा सके जिसे सभी दृश्यों में साझा किया जा सके। आईओएस सिंगलेट्स here के बारे में पढ़ें।

इस प्रकार मैंने अपने आईओएस ऐप में जो खोजा है उसे पूरा किया।

10

सामान्य रूप से, आप ग्लोबल्स का उपयोग करने से बचना चाहते हैं। यदि आपको डेटा तक पहुंच की आवश्यकता है जिसे साझा किया जाना चाहिए, तो दो आम दृष्टिकोण हैं।

मूल्यों को अपने ऐपडिलेगेट में रखें।

यदि आपके पास केवल एक या दो साझा मूल्य हैं, तो ऐपडिलेगेट साझा सामग्री को रखने का एक आसान तरीका है।

AppDelegate जैसे अपने नियंत्रकों से पहुँचा जा सकता:

FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate]; 

कहाँ FooApp आपके आवेदन क्लास का नाम है।

एक सिंगलटन कक्षा बनाएं।

साझा मूल्यों के बहुत सारे के साथ अपने AppDelegate प्रदूषण आदर्श नहीं है, और/या यदि आप इन मूल्यों को सत्र के लिए सत्र से लागू करने के लिए, एक Singleton वर्ग कि NSUserDefaults के द्वारा समर्थित है बनाने चाहते हैं उन पर मूल्यों को साझा करने के एक और तरीका है उदाहरणों।

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