2012-01-19 13 views
5

मैं एक UINavigationController जहाँ मैं वर्गों में से एक पर एक UIViewControllers, और IBActions धक्का पहले प्रकार का एक और उदाहरण पैदा कर सकता है के साथ एप्लिकेशन का निर्माण कर रहा हूँ पुश किया जाए:क्या यह एक बुरा व्यवहार है जो UINavigationController को दृश्य नियंत्रकों को धक्का देने की अनुमति देता है जो दोहराने वाले स्टैक का कारण बन सकता है?

ViewControllerType1 -> ViewControllerType2 -> ViewControllerType3 - -> ViewControllerType1

जैसा कि आप देख सकते हैं, स्टैक पर कोई 'अंत' नहीं है।

क्या यह बुरा अभ्यास इस तरह का कभी खत्म चक्र नहीं है? क्या एक UINavigationController स्टैक को 'अंत' के साथ दिमाग में इस्तेमाल किया जाना चाहिए?

+0

एक अच्छा काउंटर उदाहरण यूट्यूब ऐप होगा - आप अंतहीन संबंधित वीडियो पर जा सकते हैं। मैंने तब कोशिश की और यह कम से कम बीस है, लेकिन मुझे पूरा यकीन है कि कोई सॉफ्टकोडेड सीमा नहीं है। – darvids0n

+0

मैंने अभी देखा और ट्विटर भी करता है। ट्वीट -> लेखक प्रोफाइल -> लेखक ट्वीट्स -> मूल ट्वीट – barfoon

उत्तर

3

यदि "उपयोगकर्ता" की अपेक्षा करता है तो यह "चक्र" की अनुमति देना ठीक है।

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

आपको यह भी सुनिश्चित करना चाहिए कि प्रत्येक दृश्य नियंत्रक जितना हो सके उतना उतना ही रिलीज़ हो सकता है जब उसे didReceiveMemoryWarning message प्राप्त होता है (यदि वह दृश्य नियंत्रक ढेर के शीर्ष पर नहीं है)।

+0

एक ट्रिक्सी उन्नत विधि (जो पूरी तरह से वांछनीय नहीं हो सकती है) 'ViewControllerType1' की वस्तुओं की एक सूची प्रदर्शित करते समय जांचना होगा कि आप कोई भी नहीं दिखाते वर्तमान एनवी नियंत्रक ढेर में से एक के। इस तरह उपयोगकर्ता (जो माना जाता है कि उसने किस आइटम को देखा है) जा रहा है, लेकिन आप यह भी गारंटी देते हैं कि स्टैक अद्वितीय है, और इसलिए अंतरिक्ष-अनावश्यक या अवांछित व्यवहार होने की संभावना कम है। – darvids0n

0

मैं कहूंगा कि यह सबसे अच्छा अभ्यास नहीं है - यह तब तक नेविगेशन को वापस बोझिल बनाता है जब तक आप रूट को पॉप या कम से कम पदानुक्रम में कम नहीं करते हैं।

इसके अलावा, मेरे अनुभव से आपको बिल्कुल भरोसा नहीं करना चाहिए कि इस तरह के व्यवस्थित नियंत्रकों की रखरखाव की गणना सही ढंग से की जाती है - मैंने एक बार एक समान दृष्टिकोण की कोशिश की है और एक व्यू कंट्रोलर पॉपिंग करने के परिणामस्वरूप इसे तकनीकी रूप से जारी किया जा रहा है ढेर।

इसके अलावा - संसाधन-वार यह भयानक है - आपको नहीं पता कि कितने व्यू कंट्रोलर आप समाप्त कर सकते हैं।