title: Proper way to init a UIView with .xib and backing class
body: <p>I have some custom created UIViews that use .xib files for layout, and backing classes for extra setup.  I create these classes using alloc/init and calling loadNibNamed in my custom init method but in doing so was causing memory leak.  Someone pointed out that the alloc portion actually created a self object that was leaking so I adjusted my init method to this one:</p>
  
  <pre><code>- (id)init 
  {
      [self autorelease];
      self = [[[[NSBundle mainBundle] loadNibNamed:@"AssignmentView" owner:nil options:nil] lastObject] retain];
      [self setupBranding];
  
      UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
      [self addGestureRecognizer:tapRecognizer];
      [tapRecognizer release];
  
      return self;
  }
  </code></pre>
  
  <p>However, now when I run analyze code I get this warning "Returning 'self' while it is not set to the result of '[(super or self) init...]'".  So my question is what is the correct way for doing custom UIViews with a backing class?</p>
  
  <p>Since it was asked I'd used this above code like this:</p>
  
  <pre><code>AssignmentView * assignmentView = [[AssignmentView alloc] init];
  [self.view addSubview:assignmentView];
  </code></pre>