के तहत किसी ऑब्जेक्ट को डिलीकेट करने के लिए मजबूर करना मैं एक आईपैड फोटो कोलाज ऐप पर काम कर रहा हूं जो स्क्रीन पर शायद सैकड़ों UIImageView
एस को खींचता है।एआरसी
एक बटन उपयोगकर्ता "फिर से बनाने" है, जो सभी तस्वीरें पर [photo removeFromSuperview]
करने के लिए एक for
पाश चलाने के लिए और फिर एक नया बैच प्रारंभ करने में लगता है की सुविधा देता है, इसी क्रम में नहीं है।
मैं एआरसी का उपयोग कर रहा हूं, और मेरा कंसोल मुझे बताता है कि मेरा Photo
की dealloc
विधि को तब तक नहीं बुलाया जा रहा है जब तक कि अगले बैच तैयार नहीं किया जाता है, जिसका अर्थ है कि मैं स्मृति समस्याओं में भाग रहा हूं, भले ही मैं अगले सेट को जोड़ने से पहले पहले सेट को हटाने का प्रयास कर रहा है।
क्या कोई तरीका है 1) प्रतीक्षा करें जब तक कि सभी फ़ोटो ठीक से डिलीक नहीं किया गया हो या 2) सभी तस्वीरों को तुरंत एआरसी के तहत डीलोक करने के लिए मजबूर करें?
राडू सही है कि एक बार जब आप छवि दृश्य हटा देते हैं और उन सभी मजबूत संदर्भों को हटा देते हैं, तो उन्हें तुरंत हटा दिया जाएगा। यह पुराने एमआरसी मुद्दे की तरह नहीं है जहां 'ऑटोरेलीज' के मैला उपयोग के परिणामस्वरूप वर्तमान रन लूप के अंत तक स्मृति की रिलीज का स्थगित हो सकता है। यदि आपको अभी भी समस्याएं आ रही हैं, तो आपको छवियों और उनके छवि दृश्यों के किसी भी संदर्भ को बनाने, जोड़ने और सहेजने के लिए हमें कोड स्निपेट दिखाने की आवश्यकता होगी। लेकिन अगर मैं छवि दृश्य को हटाता हूं और नया बना देता हूं, तो पुराने के लिए डेलोक एक नया निर्माण करने से पहले होता है। – Rob