我正在获取内存泄漏,在一个旋转的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];
}
...
答案 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];
}