title: MKMapViewDelegate derived class and delegate assignment
body: <p>This is probably more of an objective-c question over iOS but I've seen some example code similar to the following that I'd like to better understand.</p>
  
  <pre><code>@interface MyMapView : MKMapView &lt;MKMapViewDelegate&gt; {
  // ivars specific to derived class
  }
  
  @property(nonatomic,assign) id&lt;MKMapViewDelegate&gt; delegate;
  
  @end
  
  @implementation MyMapView
  - (id) initWithFrame:(CGRect)frame
  {
      self = [super initWithFrame:frame];
      if (self)
      {
          // initialize the ivars specific to this class
  
          // Q1: Why invoke super on this delegate that's also a property of this class?    
          super.delegate = self;
  
          zoomLevel = self.visibleMapRect.size.width * self.visibleMapRect.size.height;
      }
      return self;
  }
  #pragma mark - MKMapViewDelegate methods
  // Q2: Why intercept these callbacks, only to invoke the delegate?
  - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
  {
      if( [delegate respondsToSelector:@selector(mapView:regionWillChangeAnimated:)] )
      {
          [delegate mapView:mapView regionWillChangeAnimated:animated];
      } 
  }
  
  @end
  </code></pre>
  
  <p>My two questions are:
  1. Why would one invoke the super.delegate and also only declare the 'delegate' as a property?
  2. Why intercept all of the delegate calls only to forward them back to the delegate?</p>
  
  <p>I appreciate any insights.</p>