Comment faire copier et mutableCopy s'appliquent à NSArray et NSMutableArray?

Quelle est la différence entre copy et mutableCopy lorsqu'il est utilisé sur un NSArray ou un NSMutableArray?

C'est ma compréhension; est-il correct?

//** NSArray **
NSArray *myArray_imu = [NSArray  arrayWithObjects:@"abc", @"def", nil];

//No copy, increments retain count, result is immutable
NSArray *myArray_imuCopy = [myArray_imu copy];

//Copys object, result is mutable 
NSArray *myArray_imuMuta = [myArray_imu mutableCopy];

//Both must be released later

//** NSMutableArray **
NSMutableArray *myArray_mut = [NSMutableArray arrayWithObjects:@"A", @"B", nil];

//Copys object, result is immutable
NSMutableArray *myArray_mutCopy = [myArray_mut copy];

//Copys object, result is mutable
NSMutableArray *myArray_mutMuta = [myArray_mut mutableCopy];

//Both must be released later
  • Vous avez une erreur dans votre édition; ne sais pas si c'est une faute de frappe ou un malentendu. Dans le premier bloc de code, la variable myArray_imuMuta est attribué à partir de mutableCopy est mutable, pas immuable, comme votre commentaire indique.
  • Merci, c'était une erreur, j'ai été de se confondre avec Xcode en disant: "Avertissement NSArray ne peut pas répondre à ajouter -addObject / -removeObjectAtIndex. Je vais changer myArray_imuMuta à NSMutableArray.
  • s'il vous plaît arrêter les modifications au nom de "l'ARC de compatibilité" - voir cette méta post pour la raison.
InformationsquelleAutor fuzzygoat | 2010-01-04