Счет сохранения NSManagedObject равен 2 после создания - PullRequest
6 голосов
/ 19 октября 2010

Мне интересно, может ли кто-нибудь объяснить, почему счетчик сохранения вновь созданного управляемого объекта равен 2. Вот код, с которым я работаю:

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
Album *newAlbum = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
NSLog(@"Album retain count: %d", [newAlbum retainCount]);

В соответствии с документацией для метода insertNewObjectForEntity он возвращает вновь созданный объект с автоматическим выпуском. Таким образом, я ожидаю, что счет удержания будет 1 вместо 2. Может кто-нибудь объяснить?

Ответы [ 2 ]

5 голосов
/ 19 октября 2010

Счет сохранения не гарантированно будет точным, возможно, вы встречались с таким случаем.

Я создал пример проекта, в котором объект alloc / init имел счет сохранения два, затем 0когда выйдет и т.д ...

0 голосов
/ 22 апреля 2011

Другая причина, которая может объяснить это, заключается в том, что если вы зарегистрировались для получения уведомлений об объектах, вставленных в этот NSManagedObjectContext, то объект добавляется в NSSet, который будет передан вам в этом уведомлении, следовательно, счетчик сохранения2.

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