2

我有一個應用程序,我正在更新到Xcode的最新版本,並且遇到與自動引用計數(ARC)有關的多個錯誤。關於自動參考計數,我需要了解什麼?

這些錯誤要求我將呼叫拉到例如autorelease,並調整我編寫的處理內存管理的其他代碼。

Clang documentation讀取:

[ARC]不提供循環收集器;用戶必須明確地管理生命期。

......這讓我非常緊張。在過去,我一直被Objective-C內存管理問題困擾,並且在我的代碼中爲每個retainreleaseautorelease辯護。

現在,ARC正在呼籲我在改變我的內存管理語義方面邁出一大步。爲了建立對ARC內存管理的信心,我需要了解什麼?

回答

7

命名約定。修復每一個靜態分析器問題,並確保你的命名是清晰的,並符合慣例 - 這現在用作與編譯器的通信。現在,這確實沒有必要,但最好刪除所有編譯器和檢查器警告,測試,確保您對命名感到滿意,然後進行轉換。這也意味着提高警戒級別並解決問題。

避免屬性詳情點擊這裏:Deep copy of dictionaries gives Analyze error in Xcode 4.2

的例子,「避免屬性」展示類型安全的,描述性的方法名稱的重要性,並確保你包括您在翻譯的使用和使用嚴格的選擇匹配。選擇:-Wstrict-selector-match。當您執行不安全的轉換時,類型安全也會出現 - 很可能您需要在程序的某些部分通過特殊鑄造引入類型安全。

懸掛對非託管類型的引用。這裏看到:Assigning an existing CGColor to a CGColor property works in iOS Simulator, not iOS device. Why?

[ARC]不提供循環收集器;用戶必須明確地管理生命期。

這是指強循環引用(例如,依賴於對象的對象)。這些將存在於您的舊程序中。儀器可以幫助您檢測它們。

完成轉換後,準備測試幾個操作系統版本。

祝你好運!


附加功能:

What are the advantages and disadvantages of using ARC?

相關問題