如果将刚刚创建的对象添加到可变数组中,并释放对象
,会发生什么答案 0 :(得分: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
答案 1 :(得分:0)
假设它是您拥有的对象(例如,它是使用alloc
创建的,而不是像stringWithFormat:
那样的一些便利构造函数),该数组现在是该对象的唯一所有者。当数组被释放或从数组中删除对象时,它将被释放,除非另一个对象获得了它的所有权。
答案 2 :(得分:0)
如果你有这样的事情:
MyObject *obj = [[MyObject alloc] init];
[myArray addObject:obj];
[obj release];
您可以说myArray
成为obj
的所有者。将对象添加到数组或字典时,该数组或字典会保留该对象。由于您释放它(放弃所有权),因此数组或字典具有唯一的保留引用,因此成为所有者。在此示例中,只要obj
被释放,myArray
就会被解除分配(假设没有其他人从数组中查询并保留它)。