title: Setter method is odd, can someone explain
body: <p>I'm taking a look at the developer library for iOS. A property called <code>masterBirdSightingList</code> was created with type <code>NSMutableArray</code>.Thats fine, in the implementation they added this peice of code</p>
  
  <pre><code>- (void)setMasterBirdSightingList:(NSMutableArray *)newList {
      if (_masterBirdSightingList != newList) {
          _masterBirdSightingList = [newList mutableCopy];
      }
  }
  </code></pre>
  
  <p>In order to </p>
  
  <blockquote>
    <p>To implement a custom setter for the master list property ... (and) to override its default setter method to make sure that the new array remains mutable.</p>
  </blockquote>
  
  <p>I'm not quite sure why this is fully necessary. Surely the array cannot suddenly change from a mutable array to something static. Is this method necessary?</p>
  
  <p>Could you also help clarify whether the method <code>setMasterBirdSightingList</code> is called every time the <code>masterBirdSightingList</code> is set? </p>
  
  <p>The tutorial I'm talking about is <a href="https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/DesigningDataModel/DesigningDataModel.html#//apple_ref/doc/uid/TP40011318-CH3-SW2" rel="nofollow">available here</a> about halfway down the page.</p>
  
  <p>Thank you</p>