在收到NSNotification后执行选择器会调用我的视图控制器的deinit

时间:2015-12-31 05:08:04

标签: ios swift nsnotificationcenter nsnotification

每次收到NSNotification并执行相应的选择器时,都会调用我的视图控制器的deinit函数! 这是我的视图控制器的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "initModels", name: "xyz.notification", object: nil)
}

func initModels(){
    print("Received notification to init models")
}

deinit {
    print("De-init view controller")
    NSNotificationCenter.defaultCenter().removeObserver(self)
}

每个视图控制器接收通知,它执行" initModels"通常,然后" deinit"直接叫! 这是在控制台上打印的内容:

Received notification to init models
De-init view controller

我检查了与多线程相关的所有内容。 通知在主线程上发送,并在主线程上执行。

1 个答案:

答案 0 :(得分:0)

哦,我的! 由于我不知道的原因,当选择器名称以“init”开头时,它会导致我的视​​图控制器的deinit函数被调用!

这是我试过的函数名称:

  • initModels>>来电deinit
  • init_models>>来电deinit
  • initmodels>>通常正常工作
  • initializeModels>>通常正常工作