可能重複:
Do removeAllObjects and release of an NSMutableArray both have the same functionality?差[NSMutableArray的removeAllObjects]和[NSMutableArray的發行]
的[nsmutablearray removeAllObjects]
和[nsmutablearray release]
的區別?
等待你的幫助。
可能重複:
Do removeAllObjects and release of an NSMutableArray both have the same functionality?差[NSMutableArray的removeAllObjects]和[NSMutableArray的發行]
的[nsmutablearray removeAllObjects]
和[nsmutablearray release]
的區別?
等待你的幫助。
首先,您提到的方法都是實例方法,而不是類方法。即,它們只能被稱爲上的NSMutableArray的實例分類 -
NSMutableArray* i = [NSMutableArray arrayWithCapacity:1];
[i removeAllObjects];
,或者
NSMutableArray* j = [[NSMutableArray alloc] initWithCapacity:1];
[j release];
,井,清空陣列,併發送一個消息release
從卸下的每個對象陣列。但是,數組對象本身仍然存在,您可以通過執行[i addObject:obj]
將項添加到其中,其中obj是有效的對象。
release
另一方面,放棄對數組對象的控制,並將其保留計數遞減1.當對象的保留計數達到0時,它將從內存中解除分配。數組對象的取消分配將導致release
消息被髮送到存儲在數組中的每個對象。
arrayWithCapacity
方法創建i
作爲自動釋放對象,並且您不要調用release
就可以了。如果這樣做並且導致對象爲dealloc
-ed,則在NSAutoReleasePool
對象將消息發送給release
消息時,它將在稍後引發異常。