2009-08-11 119 views

回答

35

不,它不會複製它們。它保留了它們。是的,您可以在將對象添加到數組後將它們安全釋放。

The docs一如既往地拼寫了這一點很清楚:

陣列保持在內容-受管理存儲環境中它們的強引用,每個對象接收保留消息中的其ID被添加到該陣列之前和從數組中移除或釋放數組時釋放消息。如果您想要具有不同對象所有權語義的集合,請考慮使用CFArray Reference,NSPointerArray或NSHashTable。

+2

很棒的回答。還要記住+ arrayWithObjects:返回一個無主的(「autoreleased」)數組,所以你必須保留它以避免丟失數組,但是數組中的對象與數組一樣長。 – 2009-08-11 15:15:08

+0

非常感謝!您應該知道我在發佈Stack Overflow之前搜索文檔(有時候,我沒有抓到所有內容)。 感謝您花時間回答我的問題。 – 2009-08-11 22:41:16

+1

感謝您的回答 - 儘管該簡介不在參考文獻中,但僅供參考。據我所知,整個部分都沒有了。你只能通過查看子類信息和一些函數調用來推斷它,主要是因爲你指出了正確的方向。 – RonLugge 2011-05-10 03:08:43