2011-02-08 4 views
1

Je suis un peu confus sur la façon de faire correctement une copie d'un objet de données de base (juste des attributs, pas des relations). Dire que j'ai mon objet A, avec un NSNumber x, et un NSString s. Est-ce bonne façon de copier ceci:Copier correctement l'objet de données de base

MyObject* B = (MyObject*)[NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:moc]; 
B.x = A.x; 
B.s = A.s; 

Ou ceci:

MyObject* B = (MyObject*)[NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:moc]; 
B.x = [A.x copy]; 
B.s = [A.s copy]; 

Si je mets à jour les attributs de A dans l'avenir, je ne veux pas les attributs de B à changer.

Répondre

1

Les deux NSNumber et NSString sont immuables; si les attributs de A changeaient dans le futur, cela ne changerait pas les objets existants NSNumber et NSString, il les remplacerait. De ce point de vue, votre premier exemple est parfaitement suffisant. En fait, votre deuxième exemple est susceptible de perdre de la mémoire si vous ne courez pas dans la corbeille car vous ne libérez jamais vos versions copiées des attributs de A.

+0

C'est ce que je soupçonnais - je suppose que j'étais inquiet que le premier exemple copiait seulement les pointeurs, pas la valeur réelle. Je suppose que ça devrait aller pour NSDate, alors? –

Questions connexes