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

时间:2011-01-11 21:48:57

标签: iphone memory-leaks clang-static-analyzer

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

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行是我展示的第一行。

1 个答案:

答案 0 :(得分:7)

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

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