dealloc上的NSArray(和其他容器)行为

时间:2009-03-28 22:54:46

标签: objective-c iphone

当客观C容器被解除分类时,他们是否会释放对其包含的对象的引用,或者我是否需要手动执行此操作?

4 个答案:

答案 0 :(得分:5)

应该仔细阅读NSArray的文档:

  

Arrays维护对其内容的强引用 - 在托管内存环境中,每个对象在将id添加到数组之前接收保留消息,并在从数组中删除数据或者释放数组时接收释放消息。如果您想要一个具有不同对象所有权语义的集合,请考虑使用CFArray Reference,NSPointerArray或NSHashTable。

答案 1 :(得分:0)

他们释放对他们包含的对象的引用。

答案 2 :(得分:0)

添加对象时,其引用计数会递增。当它被删除(手动或者数组被销毁时),它的引用计数会减少。

因此,使用以下代码,您不必释放对象

NSObject* someObject = [[[SomeClass alloc] init] autorelease];
[someArray addObject: someObject];

答案 3 :(得分:0)