我正在对应用程序进行最后修改,我正在摆脱每个编译器/分析器警告。
我有一堆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也是坏的。
我可以做些什么来确保我处理分析器打嗝或者我正确发布?
提前致谢
答案 0 :(得分:6)
静态分析器抱怨的问题可能在你的方法名称中 - 根据obj-c命名约定,在其名称中使用alloc,new或copy的方法应该返回调用者'拥有'并且必须释放的对象 - 并且你的方法返回自动释放的对象。
引自docs:
您拥有自己创建的任何对象。
您 使用方法“创建”对象 其名称以“alloc”开头 “新”或包含“副本”(例如, alloc,newObject或mutableCopy)。
首先,我建议您从方法名称中删除“新”