title: Empty NSMutableArray read from plist becomes immutable object
body: <p>Write an empty NSMutableArray to disk, then read it back, it becomes an immutable object.<br>
  But, if the NSMutableArray is not empty, it won't. How to explain that?<br>
  here are the codes:</p>
  
  <pre><code>NSMutableArray *testItems1 = [NSMutableArray array];
  NSMutableDictionary *testList1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:testItems1, @"list_items", @"list1", @"list_name", nil];
  
  NSMutableArray *testItems2 = [NSMutableArray arrayWithObjects:@"item11", @"item22", nil];
  NSMutableDictionary *testList2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:testItems2, @"list_items", @"list2", @"list_name", nil];
  
  NSMutableArray *testLists = [NSMutableArray arrayWithObjects:testList1, testList2, nil];
  
  [testLists writeToFile:@"/tmp/testLists" atomically:YES];
  
  NSMutableArray *testReadLists = [NSMutableArray array];
  [testReadLists setArray:[NSArray arrayWithContentsOfFile:@"/tmp/testLists"]];
  NSMutableDictionary *testReadList = [testReadLists objectAtIndex:0];
  NSMutableArray *testReadItems = [testReadList objectForKey:@"list_items"];
  [testReadItems addObject:@"item3"]; // Crashes here: "*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'"
  </code></pre>