静态分析仪说我有泄漏....为什么?
我认为这个代码应该没问题,但静态分析器不喜欢它。 我无法弄清楚为什么,希望有人能帮助我理解。 代码工作正常,分析结果只是让我感到困惑。
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
,静态分析器将不再报告泄漏。