可能重複發生的事情:
what happens if you add your just created object to a mutable array, and you release your object in objc如果您在剛剛創建對象添加到一個可變的數組,你釋放你的對象
如果您剛剛創建的對象添加到會發生什麼一個可變的數組,並且你釋放你的對象
可能重複發生的事情:
what happens if you add your just created object to a mutable array, and you release your object in objc如果您在剛剛創建對象添加到一個可變的數組,你釋放你的對象
如果您剛剛創建的對象添加到會發生什麼一個可變的數組,並且你釋放你的對象
假設它是你擁有的對象(例如它是用alloc
創建的,而不是一些方便的構造函數如stringWithFormat:
),該數組現在是該對象的唯一所有者。當數組被解除分配或從數組中移除對象時,它將被解除分配,除非另一個對象擁有它。
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好回答:直接和簡單.... :) – Jhaliya 2011-04-15 07:35:47
如果你有這樣的事情:
MyObject *obj = [[MyObject alloc] init];
[myArray addObject:obj];
[obj release];
你可以說myArray
成爲obj
所有者。將一個對象添加到數組或字典時,它將被該數組或字典保留。由於您釋放它(放棄所有權),數組或字典具有唯一的保留引用,因此成爲所有者。在這個例子中,obj
一旦myArray
被取消分配(假設沒有人從數組中查詢並保留它),obj
被取消分配。
五小時前發生的同樣的事情,當你問同樣的問題。 – 2011-04-15 07:32:07
發表我的答案之前看到dup :-( – taskinoor 2011-04-15 07:34:22