使用的XCode 4.2,我使用的代碼靜態分析類似如下的內存泄漏:的XCode靜態分析報告,當實例變量被分配
@interface ArrayDimensions: NSObject
{
ArrayIndex *dims;
}
-(id) init: (int *)dims_;
@end
@implementation ArrayDimensions
-(id) init: (int *)dims_
{
self = [super init];
if(self)
dims = [[ArrayIndex alloc] make:dims_];
return self;
}
@end
靜態分析報道稱,該「方法返回帶+1保留計數「,並且」對象泄漏:已分配的對象在此執行路徑中未被引用「。在我的代碼中這是一種常見的警告類型,並且在每種情況下,分析器似乎都無法識別出我正在設置實例變量的值。
我的問題是,我是否確實泄漏內存或分析儀是否有問題。
我想說的是我在dealloc方法中釋放成員。在我看到這個問題的情況下,分析儀似乎不在乎。爲什麼這是一個「壞習慣」? –
無論何時在Objective-C中分配一個對象,它都會緊跟着一些'init'的變體。如果您要將'ArrayIndex'頭文件放在另一個Objective-C程序員的指令中,我可以保證他們會錯誤地實例化對象。就像mipadi說的那樣,如果'make'是你的初始化器,就把它重命名爲'initWithDimensions'。這可能會阻止靜態分析儀投訴。 – Joe