自动释放的NSArray会导致内存泄漏吗?



我试图使用arrayWithArray创建一个NSMutableArray,添加两个对象,排序,并存储到一个ivar作为一个NSArray。我的代码是这样的:

NSMutableArray *_mutableItems = [NSMutableArray arrayWithArray:[self.mainViewController.someDictionary allKeys]];
[_mutableItems addObject:@"Buildings"];
[_mutableItems addObject:@"Parking"];
self.curItems = [_mutableItems sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

当我配置应用程序时,我在视图弹出后得到NSArray的内存泄漏。但我不明白的是:这些对象不都是自动释放的吗?当我将保留计数分配给实例属性时,我是否增加了保留计数?

是的,设置该属性可能会增加保留计数。具体来说,_mutableItems将被自动释放,但您使用sortedArrayUsingSelector创建的数组将由该属性保留。

您的财产申报包括retain还是copy ?

@property (retain) NSArray *curItems;

如果是,在您的类dealloc方法中,确保您在数组上调用release;

- (void)dealloc {
    [curItems release];
    [super dealloc];
}

最新更新