मैं निम्नलिखित उदाहरणों के लिए आवश्यक ऑब्जेक्ट स्वामित्व पैटर्न पर कुछ हद तक अस्पष्ट हूं। जब मेरा UIViewController एक पॉपओवर नियंत्रक, एक एक्शन शीट, या मोडल के रूप में एक और दृश्य नियंत्रक प्रस्तुत करता है, तो क्या मुझे उस बच्चे नियंत्रक के एक निरंतर संदर्भ पर लटका दिया जाना चाहिए जब तक इसे खारिज नहीं किया जाता है?UIPopoverController, UIActionSheet, और मोडल व्यू नियंत्रकों के लिए पैटर्न को बनाए रखें/रिलीज़ करें?
दूसरे शब्दों में, कोड की निम्नलिखित पंक्तियां प्रभावी ढंग से "हस्तांतरण" स्वामित्व करें या नहीं?
[aPopoverController presentPopoverFromBarButtonItem:someButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO];
[anActionSheet showFromBarButtonItem:someButtonItem animated:NO];
[aViewController presentModalViewController:someOtherViewController animated:YES];
क्या कोई मुझे इस विषय पर स्पष्ट दस्तावेज़ीकरण के लिए इंगित कर सकता है?
सावधान रहें, अगर आप इसे इस तरह करते हैं तो खोजवीसी लीक हो रही है। एक autorelease जोड़ें। – steipete
हां, सर्चवीसी लीक हो गई है। एक autorelease के बजाय, एक साधारण रिलीज भी काम करेगा। इसे अंतिम पंक्ति में जोड़ें: '[searchVC रिलीज];' –
'पॉपओवर कंट्रोलरडिडडिस्मिसपोपर:' के लिए प्रलेखन के रूप में: _ "पॉपओवर नियंत्रक बर्खास्त करने के लिए प्रोग्रामेटिक कॉल के जवाब में इस विधि को कॉल नहीं करता हैपोपरएनिएटेड: विधि। यदि आप प्रोग्रामर रूप से पॉपओवर को खारिज कर दें, आपको बर्खास्तगी कॉल करने के तुरंत बाद कोई क्लीनअप क्रियाएं करनी चाहिए: विधि। "_। तो यदि आप 'dismissPopoverAnimated' का उपयोग करते हैं, तो आपको इसके बाद रिलीज कॉल करने की भी आवश्यकता होगी, अन्यथा आपको रिसाव मिलेगा। – ivanzoid