试图释放NSMutableArray的泄漏

时间:2011-07-15 14:31:18

标签: ios memory-leaks nsmutablearray

我正在获取内存泄漏,在一个旋转的UIViewController中释放NSMutableArray,然后在ViewDidLoad中它分配并插入数组,向它添加对象;然后当视图关闭时:它的dealloc()释放每个数组对象,然后释放数组。

通常会导致泄密。

我的基本结构:......

...m  file:

NSMutableArray* foo;

@implementation ....

viewDidLoad
{
[[foo  alloc]  init];
...
}

dealloc
{
  for i = each foo object:
    [foo  objectAtIndex: i]  release];

    [foo  release];
}

...

2 个答案:

答案 0 :(得分:1)

当您的数组中的项目被retain编辑到别处时,可能会导致泄漏。向该项发送release消息只会减少其保留计数,并且实际上不会将其解除分配。

答案 1 :(得分:1)

当释放NSMutableArray时,它会处理释放它的所有子节点。同样适用于NSArray,NSMutableDictionary,NSDictionary等等。

尝试将foo设置为标题中的实例变量,然后合成它:

...h file
@interface MyObject : NSObject {
    NSMutableArray* foo;
}

@property (nonatomic, retain) NSMutableArray *foo;

...m file
@implementation ....
@synthesize foo;

viewDidLoad
{
    self.foo = [[NSMutableArray  alloc]  init];
    ...
}

dealloc
{
    [foo  release];
}