2010-05-19 20 views
11

यदि मेरे पास किसी विधि को पारित पैरामीटर है, तो क्या मुझे विधि के अंत में पैरामीटर जारी करने की आवश्यकता है?क्या आपको उद्देश्य-सी में उनके अंत में विधियों के पैरामीटर जारी करने की आवश्यकता है?

उत्तर

66

नहीं। एनएआरसी: "न्यू ऑलोक रिटैन कॉपी"। यदि आप इनमें से कोई भी काम नहीं कर रहे हैं, तो आपको रिलीज करने की आवश्यकता नहीं है।

+11

संक्षिप्त नाम –

+6

गंभीरता से। यह बहुत अच्छा है। यदि आप स्टूज की आवाज़ मानते हैं और "नरक narc narc" सोचते हैं तो अच्छी तरह से काम करता है क्योंकि आप स्मृति प्रबंधन के मुद्दों के लिए अपने कोड का विश्लेषण करते हैं ... – bbum

+1

0 वोटों के साथ एक प्रश्न के लिए बहुत सारे प्रतिनिधि हैं। –

2

आपको केवल उन्हें रिलीज़ करने की आवश्यकता है, अगर आप retain उन्हें अपनी विधि में छोड़ दें। सम्मेलन यह है कि कॉलर यह सुनिश्चित करने के लिए ज़िम्मेदार है कि कम से कम जब तक कॉल सक्रिय है, तब तक तर्कों के रूप में पारित वस्तुएं जीवित रहती हैं।

6

कृपया Cocoa memory management guidelines पढ़ें। निम्नलिखित नियम अपने प्रश्न के लिए प्रासंगिक है:

यदि आप इसे एक विधि जिसका नाम "alloc" या "नया" के साथ शुरू होता या उदाहरण के लिए "कॉपी" (शामिल का उपयोग कर बनाते हैं तो आप एक वस्तु का स्वामित्व लेने, alloc, newObject, या mutableCopy), या यदि आप इसे एक सतत संदेश भेजते हैं। रिलीज या ऑटोरेलीज का उपयोग कर अपने स्वामित्व वाली वस्तुओं के स्वामित्व को छोड़ने के लिए आप ज़िम्मेदार हैं। किसी भी अन्य वस्तु को आप ऑब्जेक्ट प्राप्त करते हैं, आपको इसे रिलीज़ नहीं करना चाहिए।

स्पष्ट रूप से आपने उन्हें (अपनी विधि में) बनाकर पैरामीटर प्राप्त नहीं किए। तो एकमात्र ऐसा हिस्सा जिसके बारे में आपको चिंता करने की ज़रूरत है वह यह है कि क्या आपने उन्हें विधि में बनाए रखा है। यदि आपने किया, तो आपको उन्हें रिलीज़ या ऑटोरेलीज़ करना होगा। यदि आपने नहीं किया है, तो आपको उन्हें रिलीज़ या ऑटोरेलीज़ नहीं करना चाहिए।

0

जब तक आप सीधे नींव वस्तुओं के साथ काम नहीं कर रहे हैं, तो आपको अब तक यह सब एआरसी को सौंपना चाहिए।

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