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

时间:2011-04-14 10:49:03

标签: objective-c ios nsarray nsdictionary retaincount

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

3 个答案:

答案 0 :(得分: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.

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

答案 1 :(得分:4)

Hariprasad,

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

  1. 发表评论“我可以发布吗? 在添加“之后,简短的回答是 是。我经常做一次 对象的autorelease 受到遏制的约束 收集,并不需要在集合之外。
  2. 删除时 来自集合的对象, 引用计数递减。如果 你想确保它不会 从内存中删除(下一个池 扫一扫)你需要保留 对象。

答案 2 :(得分:2)

NSArrays会保留添加到其中的任何对象。