静态分析仪说我有泄漏....为什么?

Wal*_*ter 1 iphone memory-leaks clang-static-analyzer

我认为这段代码应该没问题,但Static Analyzer不喜欢它.我无法弄清楚为什么,并希望有人能帮助我理解.代码工作正常,分析器结果只是让我烦恼.

Coin *tempCoin = [[Coin alloc] initalize];
self.myCoin = tempCoin;
[tempCoin release];
Run Code Online (Sandbox Code Playgroud)

Coin是一种通用的NSObject,它有一个初始化的方法.myCoin是当前视图的属性,属于类型Coin.我假设它告诉我,我正在泄漏tempCoin.

在我看来.h我将myCoin设置为非原子的属性,保留.

我试图自动发布代码以及这个正常版本,但静态分析器继续说:
1.方法返回一个带有+1保留计数的Objective-C对象(拥有引用)
2.第97行分配的对象不再在此点之后引用并且保留计数为+1(对象泄露)

第97行是我展示的第一行.

Jon*_*pan 7

因为静态分析仪正在寻找init,而不是initialize.它看到后者并假设[Coin alloc]返回的对象返回一个不同的对象initialize,从而泄漏第一个对象.

将方法的名称更改为init,静态分析器将不再报告泄漏.