title: Is it necessary to set view to nil after calling view.removeFromSuperview()?
body: <p>In the code below I have two buttons.</p>
  
  <p>button1 is optional, it is assigned with the function to remove itself from superview.</p>
  
  <p>button2 is assigned a function which adds button1 to superview, with unwrapping the optional type of button1.</p>
  
  <p>I hope to deallocate button1 from memory after calling <code>.removeFromSuperview()</code>, so that when you click button2 after clicking button1, the app will crash:</p>
  
  <pre><code>  var button1: UIButton?
    override func viewDidLoad() {
      super.viewDidLoad()
      var frame1 = CGRectMake(100, 150, 150, 40)
      button1 = UIButton(frame: frame1)
      button1!.setTitle("remove button 1", forState: .Normal)
      button1!.setTitleColor(UIColor.blackColor(), forState: .Normal)
      self.view.addSubview(button1!)
      button1!.addTarget(self, action: "remove:", forControlEvents: .TouchUpInside)
  
      let frame2 = CGRectMake(100, 250, 150, 40)
      let button2 = UIButton(frame: frame2)
      button2.setTitle("display button 1", forState: .Normal)
      button2.setTitleColor(UIColor.blueColor(), forState: .Normal)
      button2.addTarget(self, action: "display:", forControlEvents: .TouchUpInside)
      self.view.addSubview(button2)
    }
    func remove(sender: UIButton){
      button1?.removeFromSuperview()
    }
    func display(sender:UIButton){
      self.view.addSubview(button1!)
    }
  </code></pre>
  
  <p>When I click button1, it is removed from superview. However when I click button2, button1 is back to superview without being initialized. 
  Is it necessary to call <code>button1 = nil</code> in <code>remove</code> function after calling <code>button1?.removeFromSuperview()</code>? If not, is button1 deallocated from memory at some certain stage? </p>