我认为这段代码应该没问题,但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行是我展示的第一行。
答案 0 :(得分:7)
因为静态分析器正在寻找init
,而不是initialize
。它会看到后者,并假设[Coin alloc]
返回的对象从initialize
返回一个不同的对象,从而泄漏了第一个对象。
将方法名称更改为init
,静态分析器将不再报告泄漏。