2016-09-20 18 views
15

एक्सकोड 8 का उपयोग करके, स्विफ्ट 3 और मैं एंटरप्राइज़ सक्षम के साथ गेम टेम्पलेट का उपयोग करके एक आईओएस एप्लिकेशन बना देता हूं। मुझे लगता है कि मैं कुछ प्रारंभिक sprites के लिए डबल नोड गिनती देख रहा था, भले ही मैं केवल एक बार addChild का उपयोग किया।sceneDidLoad दो बार बुलाया जा रहा है?

मैं कोड और पता नहीं क्यों यह दो बार बुलाया जा रहा है के लिए

override func sceneDidLoad() { 
print(#function) ... } 

गयी।

लॉग फ़ाइल ...

2016-09-20 10:21:31.482 MMDecon1[3295:791435] SKUtil.m: MGGetBoolAnswer is not available in the simulator. 
sceneDidLoad() 
sceneDidLoad() 

मैं

override func didMove(to view: SKView) {..} 

जोड़ा गया है और एक अस्थायी ठीक के रूप में यहाँ में मेरी initialisation कोड डाल दिया।

क्या कोई यह जानता है कि इकाई का उपयोग करते हुए डिफ़ॉल्ट गेम ऐप कोड के साथ sceneDidLoad() को दो बार क्यों निकाल दिया जा रहा है?

+2

क्योंकि एक्सकोड पहले दृश्य के एक डमी संस्करण को सेट करता है, फिर वास्तविक दृश्य। कोई विचार नहीं, ऐप्पल का कहना है कि यह सही ढंग से काम कर रहा है – Knight0fDragon

+0

आपको यह कहां मिला? 'SceneDoadLoad' के लिए टिप्पणी कहती है," यह एक बार सेटअप करने के लिए अनुशंसित जगह है "' –

+0

धन्यवाद, तब कुछ भी स्पष्ट नहीं है। – JohnnieMac

उत्तर

1

आम तौर पर, sceneDidLoad को केवल एक बार कहा जाता है। हालांकि, अगर स्मृति चेतावनी भेजी जाती है तो UIViewController अपने दृश्य को रिलीज़ करता है और दृश्य नियंत्रक दिखाई नहीं देता है तो इसे शून्य पर सेट करता है। अगली बार जब दृश्य दिखाई देता है तो व्यू कंट्रोलर दृश्य को फिर से लोड करेगा और दृश्यडिडलोड को फिर से कॉल करेगा।

आपको यह मानना ​​होगा कि दृश्यडिडलोड को कई बार कहा जा सकता है।

कार्यान्वित किया गया था ReceiveMemory चेतावनी और लॉग इन या क्या हो रहा है यह देखने के लिए एक ब्रेकपॉइंट सेट करें।

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