Where to remove observer for NSNotification in Swift?

后端 未结 9 1481
你的背包
你的背包 2020-12-01 00:37

Where should I remove the observer for NSNotification in Swift, since viewDidUnload and dealloc() are unavailable?

9条回答
  •  感情败类
    2020-12-01 01:12

    You can use three methods:

    1. after popViewController, back navigationController or dismissViewControllerAnimated:

      deinit {
          print("Remove NotificationCenter Deinit")
          NSNotificationCenter.defaultCenter().removeObserver(self)
      }
      
    2. viewDidDisappear, remove after it is already the next view controller:

      override func viewDidDisappear(animated: Bool) {
          NSNotificationCenter.defaultCenter().removeObserver(self)
      }
      
    3. viewWillDisappear - before opening the next view:

      override func viewWillDisappear(animated: Bool) {
          NSNotificationCenter.defaultCenter().removeObserver(self)
      }
      

    Swift 3.0 syntax:

    NotificationCenter.default.removeObserver(self)
    

提交回复
热议问题