我说的是 NSMutableArray 的 -removeAllObjects、-removeLastObject 等方法。文档只说这些方法从数组中“删除”对象。被移除的对象是否被释放?
问问题
1093 次
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 回答