当保留NSArray的子​​节点并且阵列被释放时会发生什么?

res*_*ode 1 objective-c nsarray

假设我从NSArray读取一个对象并保留该对象.然后我完成NSArray并释放它.NSArray现在的保留计数为零.它是否已被解除分配或者是否会被强制保留,直到子对象被解除分配为止?

基本上我要问的是,如果我需要复制孩子而不是保留它,当孩子将被保留一段时间但不需要阵列?

我认为保留是好的,NSArray将被解除分配,但我想确定.

Joh*_*ker 5

因为您在NSArray中保留了该对象(与数组中的其他对象相比),其保留计数为2.(一个来自NSArray,一个来自你.)

因此,当NSArray被释放时,您的对象仍将具有一个保留计数,因此在自动释放池清空后仍然存在.(当然你要发布它.)

  • +1进一步阐述:数组几乎只保存自己的对象指针,并在释放时释放它们.这是在将对象从阵列中取出后保留对象的重点. (2认同)