使用核心数据实例化自定义对象



当前,每当我想保存名为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

这会导致核心数据/内存问题吗?

否,原因如下:

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

  2. 指定newList = localList时,将丢弃localList中的上一个对象及其所有数据。在这一点之后剩下的就是您最初分配给newList的那个。例如,您对localList.name的分配将随localList对象一起消失。

由于已经定义了List,因此很难说在这两种情况下是否正确创建了List实例。至少您的代码泄露了您创建的第二个List,而且该代码似乎不太可能做到您认为的那样。

您的代码相当于:

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

最新更新