使用的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