Перевыпущенный NSSet в NSManagedObject - PullRequest
0 голосов
/ 01 февраля 2011

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

    NSSet *feedSet = [[NSSet alloc] initWithSet:mutableFeedSet];
Signature *signature = (Signature *) [NSEntityDescription insertNewObjectForEntityForName:@"Signature" inManagedObjectContext:context]; 
signature.site = [feed objectForKey:@"site"];
signature.url = [feed objectForKey:@"url"];
signature.feedList = feedSet;

NSLog(@"%d", [feedSet retainCount]);

[context save:&error];

[feedArray release];
[mutableFeedSet release];
[formatter release];
[feedSet release];

, когда я печатаю feedSet сохранить счет я понял, что signature.feedList = feedSet; не удерживает объект, поэтому я удалил [feedSet release]; и я решил проблему ... Вопрос в том.Почему при присвоении feedSet свойству feedList он не сохранил объект?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

Возможно, Signature - это ваш класс, и у вас есть свойство feedList. Если вы хотите сохранить объект, вы должны объявить его следующим образом

@property(nonatomic, retain) NSSet* feedList;
0 голосов
/ 01 февраля 2011

Если signature.feedList = feedSet; не сохраняет его, это потому, что свойство определено как assign (не copy или retain). Или, если не синтезирован, ваша реализация сеттера скрыта.

Если это не так, у вас есть где-то шальные autorelease или release.

Обратите внимание, что retainCount здесь не очень хороший показатель; autorelease не приведет к немедленному уменьшению счетчика хранения.

<Ч />

Aha! Вы сказали @dynamic feedList; Это подкласс управляемого объекта?

@dynamic не предоставляет реализации методов. Итак, вы либо внедрили setFeedList:, либо вы используете подкласс NSManagedObject (или это суперкласс).

Что это?

И, пожалуйста, опубликуйте информацию об обратном сбое.

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