0
我已經寫了下面的代碼行:RemoveAllObjects和NSMutableArray的發佈都具有相同的功能嗎?
NSMutableArray *array=[[NSMutableArray alloc]init];
這種分配一些內存。我的問題是,我們以後如何釋放這個內存,無論是使用removeAllObjects方法還是[array release]?
這兩種方法是否具有相同的功能?
我已經寫了下面的代碼行:RemoveAllObjects和NSMutableArray的發佈都具有相同的功能嗎?
NSMutableArray *array=[[NSMutableArray alloc]init];
這種分配一些內存。我的問題是,我們以後如何釋放這個內存,無論是使用removeAllObjects方法還是[array release]?
這兩種方法是否具有相同的功能?
當您將一個對象添加到數組中時,對象的保留計數將增加1.當您從數組中移除該對象時,保留計數將減1以平衡它。但是,如果釋放數組,所有對象將自動收到釋放消息。所以在釋放數組之前,您不需要調用removeAllObjects。
從技術上講,這兩種方法是不一樣的。如果您調用removeAllObjects,則該數組將變爲空,並且所有對象都將收到釋放消息,但數組本身仍未釋放。該陣列將在您調用發佈時發佈。
那麼當我調用removeAllObjects時,爲什麼我的NSMutableArray被釋放? – jowie 2010-08-27 12:13:08
它不應該在這種情況下被釋放。可能還有其他一些問題。你可以發表一些代碼,以便我們可以試一試嗎? – taskinoor 2010-08-27 13:24:54
對我來說,真的很奇怪。 iOS 6,Xcode 4.5.1 – 3lvis 2012-10-09 09:02:30