Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 用核心数据实例化自定义对象_Iphone_Ios_Objective C_Core Data_Magicalrecord - Fatal编程技术网

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

Iphone 用核心数据实例化自定义对象,iphone,ios,objective-c,core-data,magicalrecord,Iphone,Ios,Objective C,Core Data,Magicalrecord,当前每当我想保存名为List的自定义对象时,我都会使用 (核心日期+) List*List=[List MR_createInContext:_managedObjectContext] 现在我想知道是否可以像这样实例化一个列表项 List *localList = [[List alloc] init]; // set some properties localList.name = @"foobar"; List *newList = [List MR_createInContext:_m

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

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

因为您已经定义了
列表
,所以很难说您在这两种情况下是否正确创建了
列表
实例。至少你的代码泄漏了你创建的第二个
列表
,而且似乎该代码不太可能像你认为的那样

您的代码相当于:

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

List *newList = localList;

不,有几个原因:

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

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


  • 每次只从核心数据读取并更正我的属性有意义吗?我只是觉得那会占用大量内存,不是吗?如果这不起作用,你能解释一下使用这个方法吗:
    List
    是OP的类——我们不知道它的
    init
    方法可能做什么。