में एक UIViewController का रिलीज/निपटान जैसा कि मैं इसे समझता हूं, हमें मोनो टच में उनके साथ निपटने के दौरान हमारे कोको वस्तुओं के संदर्भों को रखने की आवश्यकता है। इसका कारण यह है कि ओबीजेसी रनटाइम अभी भी ऑब्जेक्ट्स के संदर्भ रख सकता है, और यदि हमारे पास उन पर "मोनो टच संदर्भ" नहीं है, तो वे कचरा इकट्ठा कर सकते हैं, जिसके परिणामस्वरूप ओबीजेसी रनटाइम उन्हें एक्सेस करने की कोशिश करता है जैसे EXC_BAD_ACCESS
।मोनो टच
कहें, हमारे पास दो UIViewController उपclasses, VC1 और VC2 हैं। यदि उपयोगकर्ता वीसी 1 पर एक बटन पर क्लिक करता है, तो यूआई वीसी 2 पर नेविगेट करता है, और उपयोगकर्ता आगे और आगे नेविगेट कर सकता है। यदि मैं हर बार जब उपयोगकर्ता इसे नेविगेट करता है तो वीसी 2 का नया उदाहरण बनाते हैं, तो पुराने उदाहरणों के संदर्भ गुम हो जाते हैं, इसलिए वे कचरा इकट्ठा होते हैं और ऐप अगली बार didReceiveMemoryWarning
को UIViewControllers के लिए प्रचारित किया जाता है।
मैं पुराने संदर्भ कैसे जारी कर सकता हूं, इसलिए मुझे हर बार वीसी 2 के समान उदाहरण का उपयोग करने की आवश्यकता नहीं है? Dispose
पर्याप्त नहीं लग रहा था।
धन्यवाद, लेकिन मुझे यकीन है कि मेरे पास कोई संदर्भ शेष नहीं है। 'वीसी 2' संदर्भ का एकमात्र प्रबंधित चीज मेरा 'वीसी 1' उदाहरण है, इसलिए जब मैं इस उदाहरण को रद्द कर रहा हूं, मूल 'वीसी 2' उदाहरण पर संदर्भ गणना 0 होना चाहिए। लेकिन ऐसा लगता है जैसे आईओएस संदर्भ का पालन कर रहा है 'didReceiveMemoryWarning' संदेशों के वितरण के लिए नियंत्रक, क्योंकि जैसे ही 'didReceiveMemoryWarning' संदेश होता है, मेरा ऐप क्रैश हो जाता है। – cheeesus
आपके पास ** प्रबंधित ** संदर्भ नहीं हैं लेकिन आपके पास ** मूल ** संदर्भ शेष (उनके या उनके माता-पिता के बीच) हो सकते हैं। इससे पहले कि आप सुनिश्चित हों कि उनका जीवन चक्र (मूल पक्ष) खत्म हो गया है, इससे पहले कि आप एक डिस्पोजेड (प्रबंधित) उदाहरण में वापस कॉल कर सकें, आपको उन्हें (प्रबंधित पक्ष) को कम नहीं करना चाहिए। यदि आपके पास एक छोटा परीक्षण केस है (या निकाल सकता है) तो एक बग रिपोर्ट @ http://bugzilla.xamarin.com खोलें और हम कोड की समीक्षा करेंगे। – poupou
ठीक है, मैं इसे अलग करने की कोशिश कर रहा हूं। आपकी सहायता के लिए धन्यवाद. – cheeesus