मैं कभी-कभी अपनी परियोजनाओं में सिंगलटन (कई अलग-अलग वर्गों द्वारा उपयोग किए जाने वाले डेटा को स्टोर करने के लिए) का उपयोग कर रहा हूं और मैं सोच रहा हूं कि मेरे ऐपडिलेट का उपयोग क्यों न करें, क्योंकि यह पहले से ही सिंगलटन और एक्सेस करने में आसान है। क्या यह एक बुरा अभ्यास है और यदि हां, तो क्यों?क्या आपके एपडेल्गेट को अपने सिंगलटन के रूप में उपयोग करना एक बुरा अभ्यास है?
उत्तर
कोई सही इस का उत्तर नहीं है। आपको इस पर कई राय मिलेंगी। मैं AppDelegate उपयोग करने के साथ कोई समस्या नहीं देखते हैं, और मैं अपने सभी क्षुधा के लिए यह करना:
- प्रतिनिधि iPhone क्षुधा के लिए व्यावहारिक रूप से अनिवार्य है,
- यह ऐप्लिकेशन के जीवनकाल में नहीं है;
- और कोई भी प्रोग्राम में कहीं से भी इसका उपयोग कर सकता है (हालांकि इसका दुरुपयोग न करें!)।
हालांकि सतर्क रहना चाहिए, इसलिए कोड जो आवश्यक नहीं है, वहां नहीं है। आप नहीं चाहते हैं कि आपका ऐपडिएगेट बड़े और अस्पष्ट हो जाए।
सवाल StackOverflow पर पहले उत्तर दिया गया है:
Application Design and AppDelegate
उस पर जवाब आप भी मदद मिल सकती।
ऐपडिलेगेट लॉन्च, पृष्ठभूमि प्रविष्टि आदि में ऐप व्यवहार को संभालना चाहिए। आपको इसे और अधिक जटिल नहीं बनाना चाहिए क्योंकि यह एक अच्छा डिजाइन पैटर्न नहीं है। लेकिन आप हमेशा अपने ऐपडिलेगेट में अपने डेटास्टोर क्लास का संदर्भ रख सकते हैं, और ऐपडिलेगेट के माध्यम से इसे एक्सेस कर सकते हैं। इस तरह आप अपने ऐपडिलेगेट से संग्रहित डेटा डेटा करते हैं लेकिन आप अभी भी आसानी से इसे प्राप्त करने में सक्षम होंगे।
ठीक है, डेटा अबास्ट्रक्शन के मामले में यह असुरक्षित पक्ष पर थोड़ा सा हो सकता है, लेकिन मेरा मानना है कि यह स्मृति में भी एक आसान जगह है। आपको क्या करना चाहिए, एक्सेसर विधियों के साथ चर को समाहित करना हो सकता है ताकि आपके पास समरूपता से संबंधित संचालन (यदि कोई हो)
लेकिन यदि आपका मतलब है कि एक यूआई कक्षा से दूसरे में ऑब्जेक्ट पास करना है, तो शायद आपको किसी अन्य से सदस्य के वैरिएबल को सेट करना, या डेटास्टोर इत्यादि का उपयोग करना चाहिए।
पूरे ऐप से प्रासंगिक नियंत्रक कोड की छोटी बिट्स के लिए, मैं ऐपडिलेगेट का उपयोग करता हूं। यदि कोड को एक अलग नियंत्रक ऑब्जेक्ट में विभाजित करने का एक समझदार तरीका है तो यह बेहतर होगा, क्योंकि मैंने ऐप प्रतिनिधियों को देखा है जो अप्रबंधनीय आकार में गुब्बारे हुए हैं।
यदि आप बाद में उनमें से एक से अधिक होना चाहते हैं तो यह आपके पुलों को जलाने के बिना 'सिंगलोनिज़' नियंत्रक ऑब्जेक्ट्स का एक अच्छा तरीका भी हो सकता है।
मैं वास्तव में इसे उपयोग करने AppDelegate पर एक वर्ग विधि शब्दों में कहें, तो मैं की तरह कर सकते हैं:
[[AppDelegate get].dataStore getRecordNumber:x] // or
[[AppDelegate get].server refreshData]
लेकिन मुझे यकीन है वहाँ उन है कि लगता है कि यह एक टीम की स्थापना में बुरा डिजाइन है कर रहे हैं रहा हूँ।
मुझे इसके लिए बहुत सारे गफ मिलते हैं, लेकिन वैश्विक प्रासंगिकता वाले छोटे डेटा के लिए, मुझे ऐप प्रतिनिधि में रखने में कोई समस्या नहीं है।
डेटा के बड़े टुकड़े एक स्टोर की आवश्यकता है जो स्मृति से बाहर है (कोर डेटा, फाइल सिस्टम, एसक्यूएललाइट, या आपके पास क्या है)।
मेरा पहला ऐप डेटा के बारे में एक छोटा सा डेटा था (एनएसडीई में पाठ, विभिन्न आकारों में यूआईएममेज इत्यादि)। मैंने इसे एक ही स्थान पर रखने के लिए डेटा प्रबंधन सिंगलटन बनाया और अपडेट के लिए सर्वर अनुरोधों को संभाला। यह ठीक काम किया। अगर मुझे पता था कि अब मुझे क्या पता है, तो शायद मैं कोर डेटा सिंक्रनाइज़ेशन रणनीति के बजाय काम करता।
यह वास्तव में निर्भर करता है - मैं एक गेम ऐप लिख रहा हूं और मुझे स्कोर, खिलाड़ियों आदि का प्रबंधन करने के लिए सिंगलटन कक्षा की आवश्यकता है ... इस मामले में सिंगलटन कोर डेटा से बेहतर काम करता है। मैं एक और ऐप लिख रहा हूं जो वास्तव में डेटा स्टोर करता है और ऑनलाइन सामग्री डाउनलोड करता है। इस मामले में, मैं कोर डेटा का उपयोग कर रहा हूँ। – darksky
हाँ, यह भी ठीक है। मैं एंटी-सिंगलटन के रूप में नहीं होने के लिए भी गफ प्राप्त करता हूं। मुझे लगता है कि यह एक अच्छा उपकरण है कि, कई अच्छे औजारों की तरह, दुरुपयोग की संभावना है। –
- 1. क्या यह एक सिंगलटन के रूप में requJS मॉड्यूल का उपयोग करने के लिए एक बुरा अभ्यास है?
- 2. रेल I18n में आलसी लुकअप एक बुरा अभ्यास है?
- 3. "सिंगलटन" कारखानों, ठीक है या बुरा?
- 4. जावास्क्रिप्ट क्यों एक बुरा अभ्यास है?
- 5. क्या छुपे हुए क्षेत्रों का उपयोग करना बुरा व्यवहार है?
- 6. क्या "अपवाद फेंकता है" बुरा अभ्यास?
- 7. जो अधिक बुरा है: एक अनावश्यक सिंगलटन या भगवान ऑब्जेक्ट?
- 8. क्या अनावश्यक संबंधों का उपयोग करना बुरा है?
- 9. एक प्रतिनिधि के साथ सिंगलटन: अच्छा विचार या बुरा?
- 10. पर्ल सबराउटिन में लेबल का उपयोग करना एक बुरा अभ्यास माना जाता है?
- 11. क्या यह संशोधित सी # सिंगलटन पैटर्न एक अच्छा अभ्यास है?
- 12. क्या आपके सभी को एक हेडर फ़ाइल में शामिल करना एक अच्छा विचार है?
- 13. क्या आपके अपने डेटा प्रकार का उपयोग करके एक फ़ंक्शन अनुकरण करना संभव है?
- 14. क्या PHP में ऑटोलोडिंग का उपयोग करना बुरा है?
- 15. क्या अंतिम स्थिर विधि घोषित करना एक बुरा विचार है?
- 16. क्या यूआरएल में डीबी आंतरिक आईडी का पर्दाफाश करना एक बुरा अभ्यास है?
- 17. क्या PHP के अंदर एचटीएमएल का उपयोग करना बुरा है?
- 18. php सिंगलटन डेटाबेस कनेक्शन, क्या यह कोड खराब अभ्यास है?
- 19. क्या स्क्रिप्ट प्रकार को अनदेखा करना एक अच्छा अभ्यास है?
- 20. क्या प्रश्नों में $ _SESSION ['id'] का उपयोग करना बुरा है?
- 21. डोमेन इकाइयों के साथ एक-से-एक इंटरफेस का उपयोग करना एक अच्छा या बुरा अभ्यास है? क्यूं कर?
- 22. क्या किसी बच्चे के ऑब्जेक्ट के लिए अपने माता-पिता को पॉइंटर रखने का बुरा अभ्यास है?
- 23. एक PHP डेटाबेस क्लास को सिंगलटन के रूप में उपयोग करने के नुकसान क्या हैं?
- 24. क्या वेबसाइट के लिए अपने स्वयं के एपीआई का उपयोग करना अच्छा अभ्यास है?
- 25. ऑटो मॉकिंग कंटेनर का उपयोग अच्छा या बुरा अभ्यास है?
- 26. क्या खाली कक्षा घोषित करना बुरा है?
- 27. परीक्षण के बाहर नकली वस्तुओं का उपयोग, बुरा अभ्यास?
- 28. सूर्य की मालिकाना जावा कक्षाओं का उपयोग करना एक बुरा अभ्यास है?
- 29. क्या ईवेंट हैंडलर को अपंजीकृत नहीं करना बुरा है?
- 30. एक परिवर्तनीय वस्तु पर लॉक करना - इसे एक बुरा अभ्यास क्यों माना जाता है?
आप अन्य कक्षाओं से सीधे AppDelegate तक कैसे पहुंचेंगे? उदाहरण के लिए, इसमें किसी संपत्ति का उपयोग करें या कुछ – darksky
अपने प्रतिनिधि को टाइप की गई पहुंच प्राप्त करने के लिए, YourAppDelegate * प्रतिनिधि = (YourAppDelegate *) [UIAplplication SharedAplication] को कॉल करें .delegate; – ageektrapped
तो क्या विभिन्न व्यू कंट्रोलर में Appdelegate आयात करना ठीक है? यदि नहीं, कृपया मुझे कहीं बताएं कि – Nil