Правильно скопируйте объект Core Data - PullRequest
1 голос
/ 09 февраля 2011

Я немного запутался в том, как правильно сделать копию объекта Core Data (только атрибуты, а не отношения).Скажем, у меня есть мой объект A с NSNumber x и NSString s.Это правильный способ скопировать это:

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

Или это:

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

Если я обновлю атрибуты A в будущем, я не хочу, чтобы атрибуты Bизменить.

1 Ответ

1 голос
/ 09 февраля 2011

Оба NSNumber и NSString являются неизменными; если в будущем атрибуты А изменятся, это не изменит существующие объекты NSNumber и NSString, а заменит их. С этой точки зрения ваш первый пример вполне достаточен.

Фактически, ваш второй пример может привести к утечке памяти, если вы не работаете под сборкой мусора, поскольку вы никогда не выпускаете скопированные версии атрибутов А.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...