簡體   English   中英

iOS 5 最佳實踐(釋放/保留?)

[英]iOS 5 Best Practice (Release/retain?)

作為一個初學 iPhone 程序員,編寫與 iOS 5 或更早版本一起使用的應用程序的最佳實踐是什么? 具體來說,我應該繼續使用數據的發布/保留,還是應該忽略它? 有關系嗎?

對於仍然對如何在單個文件上關閉 ARC 感到好奇的人,這就是我所做的:

  1. Go 到您的項目設置,在Build Phases > Compile Sources
  2. Select 要禁用 ARC 的文件並添加-fno-objc-arc編譯器標志。 您可以通過選擇文件然后按“Enter”鍵一次為多個文件設置標志。

我不知道這是否是推薦的方式,但它對我有用。

PS:我從 clang.llvm.org 收集這些信息,該信息可公開訪問,因此不受 NDA 約束。

由你決定。 您可以使用 ARC(自動引用計數)編寫應用程序,Xcode 將編寫“粘合代碼”以允許您啟用 ARC 的應用程序在 iOS 4 上運行,無需修改。 但是,某些事情不會起作用,最明顯的是,您可能希望使用的許多庫(有時)會拋出無數錯誤,並且在開發人員發布與 ARC 兼容的更新之前,您將無法使用它們。


編輯:我最近發現您可以按文件關閉 ARC。 請參閱pixelfreak的回答 所以,我的建議仍然有效,但現在不需要更新第 3 方庫即可與 ARC 一起使用。

以下是 Apple 關於為特定文件選擇退出 ARC 的說明:

當您遷移項目以使用 ARC 時,-fobjc-arc 編譯器標志設置為所有 Objective-C 源文件的默認值。 您可以使用 class 的 -fno-objc-arc 編譯器標志為特定 class 禁用 ARC。 在 Xcode 中,在目標 Build Phases 選項卡中,打開 Compile Sources 組以顯示源文件列表。 雙擊要設置標志的文件,在彈出面板中輸入-fno-objc-arc,然后單擊完成。

在此處輸入圖像描述

此處查看完整的過渡指南。

iOS 5 仍處於 NDA 之下,可能會在他們發布公共版本之前。 如果您有開發者帳戶,請前往Apple 開發者論壇並在那里提問。

對於以前的版本,您必須計算引用並相應地保留和釋放。 查看Memory 管理指南

編輯:這是自動引用計數的公共規范公共 iOS 5 頁的引用:

Objective-C 的自動引用計數 (ARC) 使 memory 管理成為編譯器的工作。 通過使用新的 Apple LLVM 編譯器啟用 ARC,您將無需再次鍵入 retain 或 release,從而顯着簡化開發過程,同時減少崩潰和 memory 泄漏。 編譯器全面了解您的對象,並在每個 object 不再使用時立即釋放它,因此應用程序運行速度與以往一樣快,性能可預測且流暢。

細節目前尚不清楚/在 NDA 下,但 Apple 已在 iOS 5 中實施自動引用計數 (ARC),詳情如下: http://developer.apple.com/technologies/ios5/

如果您使用 iOS 5 SDK 在 Xcode 4 中開發新應用程序,您可以放心地忽略保留/釋放計數。

[編輯] sudo rm -rf 提出了一個很好的觀點; 第三方庫可能會受到重大影響

這當然是開發人員或團隊的選擇。 ARC (自動參考計數器)通過為您自動管理 memory 使事情變得更容易。 它將在適當的時候釋放、保留和解除分配。 我相信您應該獲得管理 memory 的經驗,最好是在測試應用程序中,如果您還沒有的話。 要考慮的另一件事是您的應用程序是否依賴第三方庫,如果不轉換為 ARC 將阻止您的應用程序編譯。 選擇顯然取決於手頭的情況。

沒有人提到SystemConfiguration.framework 請不要忘記將其放入Frameworks中。 我悲慘地花了幾個小時才意識到這一點。

在項目設置>構建階段>編譯源中將標志設置為-fno-objc-arc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM