当前,每当我想保存名为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
这会导致核心数据/内存问题吗?
否,原因如下:
-
不能将
init
与托管对象一起使用。指定的初始值设定项是initWithEntity:insertIntoManagedObjectContext:
。NSEntityDescription
上还有一个方便的构造函数insertNewObjectForEntityForName:inManagedObjectContext:
。如果你不使用其中一个,你就会遇到问题。 -
指定
newList = localList
时,将丢弃localList
中的上一个对象及其所有数据。在这一点之后剩下的就是您最初分配给newList
的那个。例如,您对localList.name
的分配将随localList
对象一起消失。
由于已经定义了List
,因此很难说在这两种情况下是否正确创建了List
实例。至少您的代码泄露了您创建的第二个List
,而且该代码似乎不太可能做到您认为的那样。
您的代码相当于:
List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";
List *newList = localList;