title: Pass self as argument within init method in Swift 1.2
body: <p>The following class has a '<code>let</code>' property declared as implicitly unwrapped variable. This previously worked with Xcode 6.2:</p>
  
  <pre class="lang-swift prettyprint-override"><code>class SubView: UIView {
  
      let pandGestureRecognizer: UIPanGestureRecognizer!
  
      required init(coder aDecoder: NSCoder) {
          super.init(coder: aDecoder)
          self.pandGestureRecognizer = UIPanGestureRecognizer(target: self, action: "panAction:")
      }
  
      func panAction(gesture: UIPanGestureRecognizer) {
          // ...
      }
  }
  </code></pre>
  
  <p>After updating to Xcode 6.3 (with Swift 1.2), the following compilation errors occur:</p>
  
  <pre><code>Property 'self.panGestureRecognizer' not initialized at super.init call
  Immutable value 'self.panGestureRecognizer' may only be initialized once
  </code></pre>
  
  <p>Moving the following line before the <code>super.init</code> call:</p>
  
  <pre><code>self.pandGestureRecognizer = UIPanGestureRecognizer(target: self, action: "panAction:")
  </code></pre>
  
  <p>gives the following error:</p>
  
  <pre><code>'self' is used before super.init call
  </code></pre>
  
  <p>The property '<code>panGestureRecognizer</code>' requires no mutation, therefore it has to be declared as constant '<code>let</code>'. Since it is a constant, it has to have an initial value upon declaration, or initialize it within the <code>init</code> method. To initialize it, it requires to pass '<code>self</code>' in the '<code>target</code>' parameter.</p>
  
  <p>Other thread suggested to declare it as implicitly unwrapped optional, and initialize it after the <code>super.init</code> call. This previously worked until I updated to Xcode 6.3.</p>
  
  <p>Does anybody know a proper implementation or a workaround for this case?</p>