title: Executing a selector after receiving NSNotification calls my view controller's deinit
body: <p>My view controller's <code>deinit</code> function is called each time I receive a NSNotification and execute the corresponding selector!!!
  Here's my view controller's code:</p>
  
  <pre><code>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)
  }
  </code></pre>
  
  <p>Each the view controller receives the notification, it executes the "initModels" normally, but then the "deinit" is directly called!
  Here's what's get printed on console:</p>
  
  <pre><code>Received notification to init models
  De-init view controller
  </code></pre>
  
  <p>I checked everything related to multi-threading.
  The notification is sent on the main thread, and executed on the main thread.</p>