2016-09-20 7 views
15

Mit Xcode 8, swift 3 und ich erstellen Sie eine iOS-Anwendung mit der Spielvorlage mit aktivierten Entitäten. Ich merke, dass ich für einige Initial-Sprites eine Anzahl von Doppel-Nodes gesehen habe, obwohl ich nur einmal addChild benutzt habe.sceneDidLoad wird zweimal aufgerufen?

Ich habe

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

auf den Code und keine Ahnung, warum dies zweimal aufgerufen wird.

Protokolldatei ...

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

Ich habe

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

und hier als temporäre Lösung mein Initialisierungscode setzen.

Weiß jemand, warum sceneDidLoad() zweimal mit dem standardmäßigen Spiel-App-Code mit Entitäten ausgelöst wird?

+2

Da xcode zuerst eine Dummy-Version der Szene erstellt, dann die echte Szene. Keine Ahnung warum, Apple sagt, dass es richtig funktioniert – Knight0fDragon

+0

Wo hast du das herausgefunden? Der Kommentar für 'sceneDidLoad' sagt' 'Dies ist der empfohlene Ort, um eine einmalige Einrichtung durchzuführen '' –

+0

Danke, nichts ist offensichtlich. – JohnnieMac

Antwort

1

Normalerweise wird sceneDidLoad nur einmal aufgerufen. Wenn jedoch eine Speicherwarnung gesendet wird, gibt UIViewController seine Szene frei und setzt sie auf Null, wenn der View-Controller nicht sichtbar ist. Wenn die Szene das nächste Mal erscheint, lädt der View-Controller die Szene neu und ruft sceneDidLoad erneut auf.

Sie müssen davon ausgehen, dass sceneDidLoad mehrfach aufgerufen werden kann.

Implementieren Sie didReceiveMemoryWarning und protokollieren Sie oder setzen Sie einen Haltepunkt, um zu sehen, was passiert.

Verwandte Themen