核心数据产生分析仪警告

时间:2011-01-04 13:42:37

标签: xcode ios core-data clang-static-analyzer

我正在对应用程序进行最后修改,我正在摆脱每个编译器/分析器警告。

我有一堆Class方法可以将我的应用程序包含在Core Data实体中。这是“挑衅”分析仪。

+ (CDProductEntity*) newProductEntity {

    return (CDProductEntity*)[NSEntityDescription insertNewObjectForEntityForName:@"CDProductEntity" inManagedObjectContext:[self context]];
}

这会导致分析器警告:

  

返回+0保留计数的对象   到+1(拥有)保留的呼叫者   计数是预期的

在调用上述类方法的方法中,我有:

CDProductEntity *newEntity = [self newProductEntity];

这会导致分析器警告:

  

Method返回一个Objective-C对象   +1保留计数(拥有   参考)

明确地释放或自动释放核心数据实体通常非常糟糕,但是它要求我在这里做什么? 首先,它告诉我它有+0保留计数,这很糟糕,然后它告诉我它有一个+1也是坏的。

我可以做些什么来确保我处理分析器打嗝或者我正确发布?

提前致谢

1 个答案:

答案 0 :(得分:6)

静态分析器抱怨的问题可能在你的方法名称中 - 根据obj-c命名约定,在其名称中使用alloc,new或copy的方法应该返回调用者'拥有'并且必须释放的对象 - 并且你的方法返回自动释放的对象。

引自docs

  

您拥有自己创建的任何对象。
   您   使用方法“创建”对象   其名称以“alloc”开头   “新”或包含“副本”(例如,   alloc,newObject或mutableCopy)。

首先,我建议您从方法名称中删除“新”