Iphone 目标C-使用核心数据发布

Iphone 目标C-使用核心数据发布,iphone,memory-management,Iphone,Memory Management,从内存管理的角度来看,这是正确的代码吗 NSEntityDescription *description = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; NSFetchRequest *eventRequest = [[[NSFetchRequest alloc] init] aut

从内存管理的角度来看,这是正确的代码吗

NSEntityDescription *description = [NSEntityDescription
                                        entityForName:@"Event" inManagedObjectContext:managedObjectContext];
NSFetchRequest *eventRequest = [[[NSFetchRequest alloc] init] autorelease];
[eventRequest setEntity:description];
[description release];

NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:
                                      @"(event == %@)", [item objectForKey:@"event"]];
[eventRequest setPredicate:eventPredicate];
或者我需要发布描述和事件谓词


谢谢

您不需要为该代码发布任何版本。您应该阅读以找出原因。

查看该代码,您唯一拥有的对象是
eventRequest
。它正在自动释放,因此您无需再次释放它

据我所见,根据命名约定,所有其他对象都不是所有者,因此您不需要释放它们


行<代码>[说明发布]很可能会在将来的某个地方导致崩溃。

阅读下一条评论,它说这是正确的。。所以我不知道答案是什么。
description
不应该发布,因为它不是从名称中带有“alloc”、“copy”、“retain”或“new”的方法中提供给您的。按照Cocoa的命名约定,名称不包含这些单词的方法不应返回对对象的拥有引用(保留计数为+1)。在此上下文中,您的对象的保留计数为0,您不应该释放它。请检查此问题,因为我不知道正确答案是什么?谢谢