title: When should a UITableViewCell with implicitly unwrapped optional register for notifications?
body: <p>A subclass of <code>UITableViewCell</code> adds observers to <code>NSNotificationCenter</code> in <code>awakeFromNib</code>. However the class also has an implicitly unwrapped optional as property.</p>
  
  <pre><code>class aCell: UITableViewCell() {
  
     var aProperty: Int!
  
     override func awakeFromNib() {
        super.awakeFromNib()
  
        NSNotificationCenter.defaultCenter().addObserver(...)
     }
  
     func notificationReceived() {
        print(aProperty)
     }
  }
  </code></pre>
  
  <p>But <code>awakeFromNib</code> is called before <code>aProperty</code> can be set:</p>
  
  <pre><code>   let cell = tableView.dequeueReusableCellWithIdentifier(...)
     cell.aProperty = 1
  </code></pre>
  
  <p>In the event of a notification before setting the property, the <code>notificationReceived</code> accesses <code>aProperty</code> while it is nil and the app crashes.</p>
  
  <p>So where should the cell register itself for notifications if I don't want to manually call it as a method after setting the property?</p>