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

我认为这个代码应该没问题,但静态分析器不喜欢它。 我无法弄清楚为什么,希望有人能帮助我理解。 代码工作正常,分析结果只是让我感到困惑。

Coin *tempCoin = [[Coin alloc] initalize];
self.myCoin = tempCoin;
[tempCoin release];

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

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

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

97行是我展示的第一行。


因为静态分析器正在查找init ,所以不进行initialize 。 它看到后者并假定由[Coin alloc]返回的对象返回与initialize不同的对象,从而泄漏第一个对象。

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

链接地址: http://www.djcxy.com/p/43733.html

上一篇: Static Analyzer says I have a leak....why?

下一篇: Core Data produces Analyzer warnings