Базовый объект данных обычно является подклассом NSManagedObject, а не NSObject.Вы не выделяете и не освобождаете его, вы создаете его с помощью ManagedObjectContext и сохраняете или удаляете его, но не освобождаете его, потому что у вас его нет.
NSObject (до ARC) следует обычным правилам управления памятью - просто, если вы получаете его с помощью alloc, copy или методом, начинающимся с new, он ваш, и вам нужно использовать release, когда нетдольше пользуйся.Если вы получаете его без выделения - например, "NSString *string = [NSSTring stringWithFormat:@"test"];
, то он автоматически освобождается, и вам не нужно его освобождать.
Доверяйте анализатору - shift-command-B..
Похоже, вы захотите определить свою базовую модель данных и затем создать подкласс NSManagedObject для информации о друзьях.Вы бы создали его, используя что-то вроде [NSEntityDescription insertNewObjectForEntityForName:@"FriendInfo" inManagedObjectContext:moc];
, а не [[FriendInfo alloc] init]
, как если бы это был объект NSObject.Сдвиг в мышлении заключается в том, что объект создается и управляется объектом ManagedObjectContext, прежде чем помещать туда какие-либо данные, запрашивать новые данные и помещать их в данные, а затем информировать ManagedObjectContext о том, что вы хотите сделать с этим объектом - сохранить или откатить (отменить все изменения с момента последнего сохранения).