2

我说的是 NSMutableArray 的 -removeAllObjects、-removeLastObject 等方法。文档只说这些方法从数组中“删除”对象。被移除的对象是否被释放?

4

2 回答 2

6

是的,它确实。任何 remove 都会调用 removed 的释放NSObject

NSArray参考指定:

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

于 2009-09-08T03:36:19.557 回答
2

是的,他们被释放了。您可以看到包含的对象是通过覆盖release您放置在容器中的对象来释放的。调用超类的release方法并在其上设置断点。你会看到它被释放了。

我最初说过我认为这些对象是自动释放的。事实证明我相信我错了。

于 2009-09-08T03:36:31.097 回答