使用对象引用的NSArray,是否显式释放数组中的所有对象或只是数组本身?

我的课有一个NSArray充满了对象。 在我的dealloc方法,我可以简单地调用释放我的NSArray,还是我需要迭代数组并释放所有对象?

你可以直接在NSArray上调用release。 NSArray的实现将负责发送release到存储在数组中的所有对象。

NSArray在添加对象时保留对象,并在删除对象或释放数组时释放它们。 牢记这一点,就是保留/释放内存pipe理所依赖的这种“所有权”的概念。 这与拥有数组的对象是一样的,如果它还保留了数组中的对象,则需要在dealloc实现中向它们发送另一个释放消息。 如果没有,并且如果没有其他对象保留它们,那么一旦数组释放它们,它们将被释放。

你应该能够释放NSArray,并且它将释放它的所有对象,而不pipe你是否持有对它们的引用。 如果你有一个在NSArray中也存在的实例对象,你将不得不显式地释放这个对象 – 只是释放NSArray可能不会释放数组上下文之外的对象。