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

时间:2011-10-15 00:35:02

标签: ios nsarray retain autorelease

我正在尝试使用arrayWithArray创建一个NSMutableArray,添加两个对象,排序并作为NSArray存储到ivar。我的代码如下所示:

NSMutableArray *_mutableItems = [NSMutableArray arrayWithArray:[self.mainViewController.someDictionary allKeys]];

[_mutableItems addObject:@"Buildings"];
[_mutableItems addObject:@"Parking"];

self.curItems = [_mutableItems sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

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

1 个答案:

答案 0 :(得分:0)

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

您的财产声明是否包含retaincopy

@property (retain) NSArray *curItems;

如果是这样,请在您的课程dealloc方法中,确保在数组上调用release;

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