मेरे पास एक नेविगेशन नियंत्रक है। विचारों में से एक अपने viewDidAppear:
में कस्टम सबव्यूव जोड़ता है। मैंने देखा कि पहली बार जब मैं ऐप लॉन्च करने के बाद इस व्यू कंट्रोलर के उदाहरण पर नेविगेट करता हूं, viewDidAppear:
दो बार आमंत्रित करता है। अगर मैं इस दृश्य को ढेर से पॉप करता हूं और फिर से नेविगेट करता हूं, viewDidAppear:
प्रति उपस्थिति केवल एक बार आमंत्रित करता है। बाद के सभी उपस्थिति एक बार viewDidAppear:
का आह्वान करते हैं।viewDidAppear को एक ही उदाहरण पर दो बार बुलाया जाता है, लेकिन पहली बार यह वर्ग लोड होता है NIB
मेरे लिए समस्या यह है कि पहली बार जब मैं इस विचार को प्राप्त करता हूं तो मैं सब्यूव्यू की संख्या से दोगुना हो जाता हूं। मैं फ्लैग वैरिएबल या कुछ ऐसे लोगों को पेश करके इस समस्या के आसपास काम करता हूं, लेकिन मैं समझना चाहता हूं कि क्या हो रहा है और इन परिस्थितियों में मुझे दो आमंत्रण कैसे मिलते हैं।
मेरे पास 'viewDidAppear: 'में एक ब्रेकपॉइंट है। यह सवाल क्यों जवाब दे सकता है? – iter
यह पता लगाने के लिए कि सिस्टम इस विधि को क्यों कॉल कर रहा है, स्टैक ट्रेस को देखें। यदि दोनों कॉल के लिए बैकट्रैक अलग है, तो आप इसका उपयोग करके यह पता लगाने के लिए इसका उपयोग कर सकते हैं कि क्या हो रहा है। बैकट्रैस में जो भी है, उसके आधार पर यह उपयोगी हो सकता है या नहीं भी हो सकता है। –
ढेर समान दिखते हैं, इसलिए आपके सुझाव पर मेरा आश्चर्य है। मेरा समाधान कोड को दोबारा करने के लिए है ताकि मैं 'viewDidAppear:' पर कोड को अप्रत्यक्ष रूप से 'viewDidLoad:' से कॉल कर सकूं, और इसलिए पूरे मुद्दे से बचें। मैं आपका जवाब स्वीकार कर रहा हूं भले ही डबल इनवोकेशन अभी भी मेरे लिए एक रहस्य है। Idempotent शब्द का उपयोग करने के लिए – iter