title: Object is nil although it was set in init
body: <p>I have an object called navigator, which I set within init. I break on it to make sure it is set. However when an IBAction func, linkButtonClicked, get's called and try's to use navigator I get a nil exception. Why?</p>
  
  <pre><code>class HomeCollectionViewCell: UICollectionViewCell {
      let appDelegate:AppDelegate!
      let navigator: Navigator!
      @IBOutlet weak var linkButton: UIButton!
      var destinationView:String?
      var parentViewController:UIViewController?
  
      @IBAction func linkButtonClicked(_ sender: Any) {
          do {
              try self.navigator.navigate(to: self.destinationView!, from: parentViewController!)
          } catch {
  
          }
      }
  
      required init?(coder aDecoder: NSCoder) {
          self.appDelegate = UIApplication.shared.delegate as! AppDelegate
          self.navigator = self.appDelegate.navigator
  
          super.init(coder: aDecoder)
      }
  
      override func prepareForReuse() {
          super.prepareForReuse()
  
          // do resetting here if needed, like empty out data
          linkButton.setTitle(nil, for: .normal)
      }
  }
  </code></pre>