2010-10-19 2 views
6

Я интересно, если кто-то может объяснить, почему сохранить отсчет вновь созданного управляемого объекта 2. Вот код, я работаю с:NSManagedObject сохранить счетчик 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. Может ли кто-нибудь объяснить?

ответ

5

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

Я сделал пример проекта, в котором объект Alloc/инициализации имел сохранить кол двух, то 0 при отпускании, и т.д ...

+2

Не только не гарантируется точность , в документации указывается, что «очень маловероятно, что вы можете получить полезную информацию из (preserveCount)». – Aderstedt

+1

http://whentouseretaincount.com очень полезно в этом отношении – seanwolter

0

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

Смежные вопросы