Objet déclaré comme
@interface MyClass : NSObject
@property (atomic, copy) NSMutableString *name;
@end
est défini comme
@implementation MyClass
@synthesize name;
@end
Appeler
MyClass *m = [[MyClass alloc] init];
NSMutableString *s = [[NSMutableString alloc] initWithString:@"Hello"];
[m setName:s];
NSLog(@"%p", [m name]);
NSLog(@"%p", [m name]);
NSLog(@"%p", [m name]);
Si l'objet renvoyé par copie à chaque fois est une copie complète de la chaîne variable, pourquoi les adresses imprimées sont-elles les mêmes ?
copy
fait référence à une opération de copie lors de l'attribution d'une valeur. Vous pouvez essayer d'imprimer à nouveau l'adresse des
ps : utilisation de l'attribut de type mutablecopy
.Euh. . Vous avez imprimé trois fois la même adresse, comment pouvez-vous la modifier ?