2017-03-27 43 views
3

我有一个SKScene显示加入当前房间的玩家。如果任何这些球员离开房间(通过点击“离开”按钮)他们的球员列表将被更新。如何将applicationWillTerminate用于特定的SKScene?

但是,如果我关闭了其中一位玩家的应用程序,该特定玩家仍留在房间中。我想从applicationWillTerminate中调用我的leaveRoom函数,因此所有数据都可以正常工作。可能吗?我该如何解决这个问题?

+0

作为一个额外的信息,以@亚历桑德罗的答案,解决问题,阅读讨论部分从[docs](https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623111-applicationwillterminate)查找何时实际调用此方法,何时不调用此方法。 – Whirlwind

回答

3

你可以让观察者拦截它:

override func didMove(to view: SKView) {   
     NotificationCenter.default.addObserver(
      self, 
      selector: #selector(GameScene.applicationWillTerminate(notification:)), 
      name: NSNotification.Name.UIApplicationWillTerminate, 
      object: nil) 
} 
func applicationWillTerminate(notification: NSNotification) { 
    // put your code here 
} 

您可以删除观察者:

override func willMove(from view: SKView) { 
    NotificationCenter.default.removeObserver(self) 
}