我想將舊代碼轉換爲ARC代碼。 然而,我在下面的行得到一個生成錯誤autorelease不允許編譯代碼
[[token retain] autorelease];
我得到以下順序3個錯誤:
-'autorelease」是不可用:自動引用計數模式
不可用- [rewriter]刪除未使用的'autorelease'消息是不安全的;它的接收器可以被立即銷燬
-ARC禁止「自動釋放」
的明確消息發送如果我刪除這一行,然後將代碼編譯正確
我想將舊代碼轉換爲ARC代碼。 然而,我在下面的行得到一個生成錯誤autorelease不允許編譯代碼
[[token retain] autorelease];
我得到以下順序3個錯誤:
-'autorelease」是不可用:自動引用計數模式
不可用- [rewriter]刪除未使用的'autorelease'消息是不安全的;它的接收器可以被立即銷燬
-ARC禁止「自動釋放」
的明確消息發送如果我刪除這一行,然後將代碼編譯正確
ARC管理你爲你的內存,所以你不不需要調用「autorelease」,「release」,「retain」等。使用ARC,編譯器根據需要保留和釋放對象,因此您不必明確地進行這些調用。如果要手動管理內存禁用ARC,或者可以使用編譯器標誌「-fno-objc-arc」禁用特定類的ARC。
ARC意味着您不必使用發佈,保留或其他討厭的內存管理事物。 ARC在編譯應用程序時自動將它們全部添加給您。 Read more here
如果你有舊代碼它不會是最好的解決辦法,以消除所有的內存管理調用,然後check this answer to disable ARC for particular files
如果這是所有上線,你可能只是將其刪除。該代碼聲稱對該對象的引用,但也表示您不想擔心稍後再發布,但使用ARC則不必擔心。
我猜測Xcode並沒有因爲缺乏上下文而自動消除它。如果它在一個更常見的位置,比如在回覆聲明中,那麼顯然意圖是什麼。當它本身就是一切時,它可能是,但可能不是,更復雜的東西。
謝謝..這個解釋有幫助 – jerry
http://stackoverflow.com/questions/9865847/is-it-possible-to-combine-non-arc-and-arc-project-code 這應該幫助。 – ratbum
@ratbum這是正確的。我已經完成了這些步驟,但是當我進入「編輯」 - >「重構」 - >「Objective-c ARC」,然後選擇相關文件進行轉換並單擊「檢查」,然後在此特定位置出現錯誤行 – jerry