1

我认为这段代码应该没问题,但静态分析器不喜欢它。我不知道为什么,希望有人能帮助我理解。代码工作正常,分析器结果让我很烦。

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

Coin是一个泛型NSObject,它有一个 initalize 方法。myCoin是当前视图的属性,类型为Coin. 我假设它告诉我我正在泄漏tempCoin

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

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

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

4

1 回答 1

7

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

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

于 2011-01-11T21:53:13.260 回答