title: assign NSMutableArray with @property and 'copy' attribute
body: <p>I'm following an official tutorial <em>Your second iOS App:Storyboard</em> and it told me to declare a property <strong>masterBirdSightingList</strong> like this(just a specific example and not necessary to know the context) :  </p>
  
  <pre><code>@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;
  </code></pre>
  
  <p>Note that there's an attribute <strong>copy</strong>. and then synthesize this property : </p>
  
  <pre><code>@synthesize masterBirdSightingList = _masterBirdSightingList;
  </code></pre>
  
  <p>And next there's one init method which made me confused :</p>
  
  <pre><code>- (void)initializeDefaultDataList {
  NSMutableArray *sightingList = [[NSMutableArray alloc] init];
  self.masterBirdSightingList = sightingList;
  [self addBirdSightingWithName:@"Pigeon" location:@"Everywhere"];
  }
  </code></pre>
  
  <p>Definitely sightingList is allocated for spaces and then it's assigned to the masterBirdSightingList property. The property has a <strong>copy</strong> attribute, though. it means the instance variable <strong>_masterBirdSightingList</strong> would be allocated for another space to preserve stuffs from <strong>sightingList</strong>. Why? Why not directly allocate space for the property like this :</p>
  
  <pre><code>self.masterBirdSightingList = [[NSMutableArray alloc] init];
  </code></pre>