我的班级有一个充满了物体的NSArray。在我的dealloc方法中,我可以简单地在我的NSArray上调用release,还是我需要迭代数组并首先释放所有对象?
答案 0 :(得分:55)
您可以直接在NSArray
上致电发布。 NSArray
的实现将负责将release
发送到存储在数组中的所有对象。
答案 1 :(得分:10)
NSArray会在添加对象时保留对象,并在删除对象或释放阵列时释放它们。记住这一点,正是这种“所有权”的概念保留/释放内存管理。拥有数组的对象也是如此,如果它还保留了数组中的对象,则需要在dealloc实现中向它们发送另一个释放消息。如果没有,并且如果没有其他对象保留它们,则一旦数组释放它们,它们将被释放。
答案 2 :(得分:1)
你应该能够释放NSArray,它将释放它的所有对象,无论你是否持有其他引用。如果您有一个也存在于NSArray中的实例对象,则必须显式释放该对象 - 只是释放NSArray可能不会释放数组上下文之外的对象。