2011-04-15 66 views
-1

可能重复发生的事情:
what happens if you add your just created object to a mutable array, and you release your object in objc如果您在刚刚创建对象添加到一个可变的数组,你释放你的对象

如果您刚刚创建的对象添加到会发生什么一个可变的数组,并且你释放你的对象

+3

五小时前发生的同样的事情,当你问同样的问题。 – 2011-04-15 07:32:07

+0

发表我的答案之前看到dup :-( – taskinoor 2011-04-15 07:34:22

回答

0

假设它是你拥有的对象(例如它是用alloc创建的,而不是一些方便的构造函数如stringWithFormat:),该数组现在是该对象的唯一所有者。当数组被解除分配或从数组中移除对象时,它将被解除分配,除非另一个对象拥有它。

3

NSArray或NSMutableArray保留对象。所以你的对象将被保留,直到你从数组中移除对象或释放数组本身。

MyClass *obj = [[MyClass alloc] init]; 
[myMutableArray addObject:obj]; // obj is retained by array 
[obj release]; // release to match the previous alloc 

[myMutableArray removeObject:obj]; // obj receives a release message 

[myMutableArray release]; // all objects in array receives release message if it is not owned anywhere else 
+0

+1好回答:直接和简单.... :) – Jhaliya 2011-04-15 07:35:47

0

如果你有这样的事情:

MyObject *obj = [[MyObject alloc] init]; 
[myArray addObject:obj]; 
[obj release]; 

你可以说myArray成为obj所有者。将一个对象添加到数组或字典时,它将被该数组或字典保留。由于您释放它(放弃所有权),数组或字典具有唯一的保留引用,因此成为所有者。在这个例子中,obj一旦myArray被取消分配(假设没有人从数组中查询并保留它),obj被取消分配。

相关问题