title: Deep copying an NSArray
body: <p>Is there any built-in function that allows me to deep copy an <code>NSMutableArray</code>?</p>
  
  <p>I looked around, some people say <code>[aMutableArray copyWithZone:nil]</code> works as deep copy. But I tried and it seems to be a shallow copy.</p>
  
  <p>Right now I am manually doing the copy with a <code>for</code> loop:</p>
  
  <pre><code>//deep copy a 9*9 mutable array to a passed-in reference array
  
  -deepMuCopy : (NSMutableArray*) array 
      toNewArray : (NSMutableArray*) arrayNew {
  
      [arrayNew removeAllObjects];//ensure it's clean
  
      for (int y = 0; y&lt;9; y++) {
          [arrayNew addObject:[NSMutableArray new]];
          for (int x = 0; x&lt;9; x++) {
              [[arrayNew objectAtIndex:y] addObject:[NSMutableArray new]];
  
              NSMutableArray *aDomain = [[array objectAtIndex:y] objectAtIndex:x];
              for (int i = 0; i&lt;[aDomain count]; i++) {
  
                  //copy object by object
                  NSNumber* n = [NSNumber numberWithInt:[[aDomain objectAtIndex:i] intValue]];
                  [[[arrayNew objectAtIndex:y] objectAtIndex:x] addObject:n];
              }
          }
      }
  }
  </code></pre>
  
  <p>but I'd like a cleaner, more succinct solution.</p>