1

目前,每当我想保存一个名为List我使用的自定义对象时

(核心日期+魔法记录

List *list = [List MR_createInContext:_managedObjectContext];

现在我想知道我是否可以像这样实例化一个列表项

List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";

List *newList = [List MR_createInContext:_managedObjectContext];
newList = locaList

这会导致核心数据/内存问题出现任何问题吗?

4

2 回答 2

2

不,有几个原因:

  1. 您不能init与托管对象一起使用。指定的初始化程序是initWithEntity:insertIntoManagedObjectContext:. NSEntityDescription在called上还有一个方便的构造函数insertNewObjectForEntityForName:inManagedObjectContext:。如果你不使用其中之一,你就会遇到问题。

  2. 当你赋值时newList = localList,你把前一个对象连同它的所有数据一起扔掉了localList。在这一点之后剩下的就是你最初分配给的那个newListlocalList.name例如,您对 的分配与localList对象一起消失。

于 2013-07-23T05:14:35.887 回答
-2

由于您已经定义List,很难说List在这两种情况下您是否正确地创建了一个实例。至少,您的代码在List您创建的那一刻就会泄漏,而且该代码似乎不太可能像您认为的那样做。

您的代码相当于:

List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";

List *newList = localList;
于 2013-07-23T04:31:24.790 回答