1

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

4

3 回答 3

6

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

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.

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

于 2011-04-14T10:58:39.547 回答
4

哈里帕萨德,

NS[collection name here] 保留添加到其中的对象,如 NSResponder 所述。其他一些事实:

  1. 对于您的评论“我可以在添加后发布它吗”,简短的回答是肯定的。很多时候,我会 autorelease为那些绑定在集合中的对象做一个操作,并且在集合之外不需要这些对象。
  2. 从集合中删除对象时,引用计数会减少。如果要确保它不会从内存中删除(下一次池扫描),则需要保留该对象。
于 2011-04-14T10:59:36.247 回答
2

NSArrays 保留添加到它们的任何对象。

于 2011-04-14T10:50:05.117 回答