iOS最佳實踐

jopen 9年前發布 | 12K 次閱讀 IOS iOS開發 移動開發

對其他平臺感興趣?看看我們的 Android 開發最佳實踐Windows App 開發最佳實踐吧。

為什么閱讀本文檔

跳進了 iOS 的坑真是麻煩。無論是 Swift 還是 Objective-C, 都沒有在其他地方廣泛使用,而且這個平臺對每個東西都幾乎有它自己的命名方式,并且連要在真機上調試都充滿了坎坷。無論你是剛剛入門 Cocoa 還是想糾正自己開發習慣的開發者,都能從本文檔獲益。不過下面寫的僅僅是建議,所以如果你有一個更好的方案,那就試試吧!

入門

Xcode

Xcode 是大多數 iOS 開發者的選擇,并且是 Apple 唯一官方支持的IDE。有一些其他的選擇,比如 AppCode 是最有名的,但是除非你是經驗豐富的開發者,否則就使用 Xcode 吧。不要管它的一些小缺點啦,它現在已經蠻好用咯。

要安裝 Xcode,只需要下載 Mac App Store 中的 Xcode 。它會同時下載最新的 SDK 和模擬器,同時你可以從 Preferences > Downloads 下載更多的內容。

項目初始化

開始iOS開發的時候,一個常見的問題是用代碼寫所有的 view 還是使用 Interface Builder(Storyboards 或者 XIB )。兩種方案都久經考量。但是,有下面幾個考慮:

為什么使用代碼?

  • Storyboard 因為它的復雜的 XML 結構容易帶來版本沖突,這讓代碼合并變得困難。
  • 容易用代碼結構化以及復用 view,讓你的代碼變得 DRY
  • 所有的信息匯集一處。在 Interface Builder 里面你需要點擊所有的檢查器來尋找你要找的東西。
  • </ul>

    為什么用 Storyboard?

    • 為了更少的技術要求,Storyboard 使用了一個很好的直接貢獻于項目的方法,比如,通過調整顏色或者布局的 constraints。然而,它要求一個項目已經做好配置,并且開發者有一些時間掌握基礎
    • 當你不用構建項目也能看到變化的時候,集成更快了
    • 在 Xcode6 里面,自定義的文字和 UI 元素在 storyboard 里面都可以可視化表示,比你在代碼里面修改好多了
    • 從iOS8開始,Size Classes 允許你設計不同類型設備的屏幕,不用重復一些工作
    • </ul>

      忽略文件

      當把項目放入版本控制系統的時候,首先應該有一個好的.gitignore文件。這樣,不必要的文件(用戶設置,臨時文件這些)都不會放進你的倉庫里面。幸運的是,Github 已經給了我們 Objective-CSwift 語言的模板

      CocoaPods

      如果你計劃增加外部依賴(比如,第三方庫)在你的項目中,CocoaPods 提供了一個快捷的途徑,就像這樣:

      sudo gem install cocoapods

      要開始使用,僅僅需要在你的 iOS 項目目錄下運行:

      pod init

      它會創建一個 Podfile, 會管理你所有的依賴,在 Podfile 中加入你的依賴后,允許

      pod install

      來安裝第三方庫并且將它們作為 workspace 的一部分,你的 workspace 也會包含你自己的項目。 一般推薦提交你自己的項目的依賴,而不是每個開發者在一個 checkout之后運行pod install。

      注意在之后,你需要打開.xcworkspace而不是.xcproject,否則你的代碼就不能被編譯了,命令:

      pod update

      會升級所有的 pod 到最新版本,你可以用大量 符號 來定義你期望的版本需求。

      項目結構

      為了組織目錄里面的上百個源代碼文件,最好根據你的架構來設置一些文件結構。比如,你可以用這樣的:

      ├─ Models
      ├─ Views
      ├─ Controllers
      ├─ Stores
      ├─ Helpers

      首先,將他們創建為 Group(黃色的目錄),用 Xcode 的項目導航里面的你的項目中。然后對每個項目里的文件,將它么連接到真實的文件目錄 —— 通過打開它右邊的文件檢查器,點擊小小的目錄圖標,在你的項目目錄下創建一個和 group 同名的子目錄。

      本地化

      一開始就應該把所有的顯示給用戶的字符串放進本地化文件。這樣不僅僅為了翻譯方便,同時也便于查找用戶看見的文本。你可以在 build Scheme 中加入一個啟動參數來指定特定的語言

      -AppleLanguages (Finnish)

      對于更復雜的翻譯問題,比如復數(比如 "1 person" 和 "3 people"),你應該使用 .stringsdictformat 而不是一個普通的localizable.strings文件。在有了這個強大的工具來處理比如 "one", some", "few" 和 "many" 的情況。 當處理俄羅斯語和阿拉伯語的時候,你就不用急得抓耳撓腮了。

      關于本地化的更多信息,看 2012年 2月的 Helsink iOS 會議的 幻燈片,大部分內容對現在也是適用的。



      其它內容:https://github.com/oa414/ios-good-practices/blob/master/TRANSLATION-CN.md

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!