NSMutableArray - 内存管理

时间:2011-06-01 16:38:00

标签: iphone xcode ios memory-management nsmutablearray

只是一个简短的问题:NSMutableArray -addObject:(id)对象方法是否保留了object-parameter?

谢谢

4 个答案:

答案 0 :(得分:2)

是的,它会保留对象。释放阵列时将释放该对象。如果您要添加已分配给数组的对象,请确保在添加它们后将其释放。

Object *o = [[Object alloc]init];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:o];
[o release];
[array release];

答案 1 :(得分:2)

是的,集合中的任何内容(集合,数组,字典)都将保留在集合中。当然,如果集合保留在第一位。

在集合中添加任何内容后,如果您是所有者,则需要将其释放。

答案 2 :(得分:0)

是。当它的保留计数达到零时,它还会释放contains中的所有对象。

答案 3 :(得分:0)

答案是肯定的。

将来,您可以通过以下方式测试这些情况。您可以使用以下方法找出对象的保留计数:

NSLog(@"Count: %d", [object retainCount]);

在将对象添加到数组之前和之后使用此代码以便自己查看。

我必须警告你,很多人建议不要使用retainCount。话虽这么说,我认为可以用它跟踪对象的持有量的增加和减少(比如在我的回答中),但不是很多。

不要依赖代码中的retainCount值;只需使用差异来跟踪分配和释放。