目前,每当我想要保存名为List
的自定义对象时,我都会使用
(核心日期+ Magical Record)
List *list = [List MR_createInContext:_managedObjectContext];
现在我想知道我是否可以实例化像这样的List项目
List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";
List *newList = [List MR_createInContext:_managedObjectContext];
newList = locaList
这会导致Core Data /内存问题出现任何问题吗?
答案 0 :(得分:2)
不,原因有两个:
您无法将init
与托管对象一起使用。指定的初始值设定项为initWithEntity:insertIntoManagedObjectContext:
。 NSEntityDescription
上还有一个称为insertNewObjectForEntityForName:inManagedObjectContext:
的便利构造函数。如果你不使用其中之一,你就会遇到问题。
分配newList = localList
时,会丢弃localList
中包含所有数据的上一个对象。此点之后剩下的就是您最初分配给newList
的那个。例如,您对localList.name
的作业会随localList
对象消失。
答案 1 :(得分:-2)
由于您已定义List
,因此很难说您是否在两种情况下都正确创建了List
实例。至少你的代码泄漏了你创建的第二个List
,而且这个代码似乎不太可能完成你认为的那样。
您的代码相当于:
List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";
List *newList = localList;