2013-03-06 32 views

回答

3

是的。

粗略地說,只有NSObject實例通過ARC處理。 ARC是一種編譯器機制,在需要時爲您添加release/retain。所以,它只適用於在非ARC情況下可以使用release/retain的情況。

這不包括通過malloc分配的內存,也不包括低級框架(核心圖形,核心音頻等)。具體而言,通過低級框架分配的對象需要通過使用特定的方法(例如,CGImageRelease等)來發布。

編輯:

核心基礎數據類型的一個非常特殊的情況下是免費電話橋接類型。在ARC之前的世界中,您可以安全地指定其對應的Objective-C類所期望的CF數據類型(例如,CFString代替NSString)。由於所有權語義不清楚,ARC禁止這樣做。因此,一組ARC指令可用於指定所有權信息(有關更多信息,請參閱this),但這不是免費橋接的CGPath的情況(因爲它沒有在CGPath Reference中說明)。

順便說一句,對於所有的ARC懷疑是一個偉大的資源是this rich post of Mike Ash's

+1

+1請注意,免費橋接CF類可以在ARC控制下使用橋接類型轉換。 – 2013-03-06 18:13:30

+0

@安德魯馬德森:謝謝。我將相關信息添加到了我的答案中,儘管它不適用於OP的情況。 – sergio 2013-03-06 18:24:52