添加到阵列时保留计数会增加吗?

Har*_*sad 1 objective-c nsdictionary nsarray ios retaincount

我只是想知道:如果将对象的保留计数添加到Objective-C中的数组或字典中,它是否会增加?将数据添加到数组或字典后,我可以立即释放它吗?

Usm*_*.3D 5

是的,它会增加您添加的对象的保留计数,这就是为什么您可以在将对象添加到数组后立即释放它.

NSObject obj1;
obj1=[[NSObject alloc] init];
//obj1's retain count is 1 here.

[array1 addobject:obj1];
//obj1's retain count incremented by 1, so the total retain count is 2.

[obj1 release];
//obj1's retain count decremented by 1, so the total retain count is 1.
Run Code Online (Sandbox Code Playgroud)

array1 将保留对象,直到array1本身未释放.


Fra*_* C. 5

哈里普拉萨德,

NS[此处的集合名称] 保留添加到其中的对象,如 NSResponder 所示。其他一些事实:

  1. 对于您的评论“添加后我可以发布它吗”,简短的回答是可以。我经常 autorelease对那些绑定在集合中并且在集合之外不需要的对象执行操作。
  2. 当您从集合中删除对象时,引用计数就会减少。如果您想确保它不会从内存中删除(下一次池扫描),您需要保留该对象。