8

मेरे पास दो UIViewControllers हैं जो एक दूसरे के लिए segue (मोडल) ट्रिगर करने वाले बटन हैं। मैं यह जानना चाहता था कि क्या आगे और आगे कूदते समय कोई मेमोरी लीक हो रहा है और मुझे लगता है कि लिविंग ऑब्जेक्ट & & आवंटित मेमोरी बढ़ रही है, जो अंततः ऐप क्रैश पर जायेगी। मेरे पास कोड की कोई भी पंक्ति नहीं है - शुद्ध UIViewControllers के साथ काम करना। storyboardस्टोरीबोर्ड segues मेमोरी लीक

profiler 1

profiler 2 project's settings

मैं गलत क्या कर रही हो सकता है?
क्या मैं प्रोजेक्ट सेटिंग्स में कुछ गलत सेट कर सकता था?
क्या मैं प्रोफाइलर की सांख्यिकी को बुरी तरह पढ़ रहा हूं?
क्या मुझे segues के साथ काम करते समय कोई विशेष रिलीज कमांड बनाने की ज़रूरत है?

उत्तर

13

आप मोडल सेग्स का सही उपयोग नहीं कर रहे हैं। जिस तरह से आपने इसे कार्यान्वित किया है, आप प्रत्येक दृश्य नियंत्रक का एक नया उदाहरण बना रहे हैं जब आप उस उदाहरण पर लौटने की बजाय सीगू करते हैं। यही कारण है कि आपकी स्मृति उपयोग में वृद्धि जारी है।

1) दृश्य नियंत्रक 2 में 1
2 दृश्य नियंत्रक) में viewController2Done के रूप में एक विधि इस तरह परिभाषित करते हैं, एक संपत्ति प्रकार id की delegate बनाएं जिसका नाम:

IOS 6 से पहले, इस संभाल करने के लिए सही तरीका करने के लिए था ।
3) दृश्य नियंत्रक 1 के लिए prepareToSegue में, दृश्य नियंत्रक 2, जब यह दृश्य नियंत्रक 1 पर लौटने के लिए समय आ गया है में) 2 self-
4 दृश्य नियंत्रक में delegate निर्धारित करते हैं, फोन [delegate viewController2Done]
5) viewController2Done में कॉल [self dismissModalViewControllerAnimated:YES]

यह विधि अभी भी आईओएस 6 में काम करती है, लेकिन इसके बजाय एक नया unwind segue भी उपयोग किया जा सकता है। इसका इस्तेमाल करने के लिए, तुम इतनी तरह आपके विचार नियंत्रक 1 में एक विधि निर्धारित करना होगा:

ऑब्जेक्टिव-सी:

- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue 
{ 
    NSLog(@"and we are back"); 
} 

स्विफ्ट:

@IBAction func unwindFromViewController2(segue: UIStoryboardSegue) { 
    print("and we are back") 
} 

तो फिर तुम नियंत्रण चाहते स्टोरीबोर्ड में दृश्य नियंत्रक के ऊपर बार में नारंगी निकास आइकन पर दृश्य नियंत्रक 2 में बटन से खींचें। पॉप अप में, आप unwindFromViewController2 और वॉयला का चयन करेंगे, आप कर चुके हैं।

enter image description here

+0

OMG, मैं मूर्ख हूँ। धन्यवाद! – Piotr

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