核心数据产生分析仪警告

Ric*_*kiG 3 xcode core-data clang-static-analyzer ios

我正在做一个应用程序的最后修饰,我正在摆脱每个编译器/分析器警告.

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

+ (CDProductEntity*) newProductEntity {

    return (CDProductEntity*)[NSEntityDescription insertNewObjectForEntityForName:@"CDProductEntity" inManagedObjectContext:[self context]];
}
Run Code Online (Sandbox Code Playgroud)

这导致分析器警告:

具有+0保留计数的对象返回给调用者,其中预期+1(拥有)保留计数

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

CDProductEntity *newEntity = [self newProductEntity];
Run Code Online (Sandbox Code Playgroud)

这导致分析器警告:

方法返回一个具有+1保留计数的Objective-C对象(拥有引用)

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

我该怎么做才能确保我要么处理分析器打嗝还是正确释放?

提前致谢

Vla*_*mir 6

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

文档引用:

您拥有自己创建的任何对象.
使用名称以"alloc"或"new"开头或包含"copy"(例如,alloc,newObject或mutableCopy)的方法"创建"对象.

所以首先尝试我从你的方法名称中删除'new'