以下均屬個人見解,有不妥地方請指出。
在從事IOS開發前做過java web的工作,對項目目錄結構及分層有比較深刻的認識。無論是java中的三層或者七層的劃分,最主要的目的都是為了項目的可讀性、可維護性,給開發人員帶來便利;當然本人也從中受到了便利。所以在從事IOS應用開發時就很理所當然的想到了工程目錄結構。
在xcode中看到的IOS目錄都是邏輯分包,如果不以實際的檔案夾進行區分,那麼即便是看到的目錄是一層層分下來的,但是當開啟項目所在的檔案夾會發現所有的檔案都在工程所在的檔案夾下面。我採用的是先在IOS工程目錄下面建立檔案夾然後拖動檔案夾到xcode,進行引入;這樣實際的工程目錄和xcode中看到的就能夠一一對應啦。
如下圖所示(項目實際在檔案夾中的階層,紅色遮蓋的為項目名稱):
xcode中項目的階層:
下面就是對各個目錄的介紹:
一、Model:
目錄中存放的是資料模型,即業務需要的實體類。可以根據需要在其下面建立不同業務的檔案夾,再在檔案夾下面存放相關實體類。如下:
Model目錄下面存放了“登入”相關和“我的資訊”相關邏輯的目錄,然後各個目錄下面再存放對應的實體。
二、NetWork:
網路處理層,對AFNetworking網路請求進行再次封裝,使用block或者代理的形式進行網路返回資料的處理。用於ViewController或者ViewModel中調用。
三、Resources:
資源檔目錄,我這主要存放圖片比如@2x、@3x圖片。可以根據實際情況,如同Model目錄中一樣,在其下面建立不同模組的檔案夾,然後再在對應模組下存放圖片。
四、ViewController:
商務邏輯控制層,存放UIViewController及相關控制類。一般情況下會同Model目錄中一樣,在其下面建立不同模組的檔案夾,然後再在對應模組下存放相應的控制類。如:
五:Common:
存放第三方庫、自己寫的協助類及自訂的UIView。如:fmdb、SDWebImage、jpush、AFNetworking、HelpClass、Widgets等:
六:AppDelegate:
建立項目自動建立的Group,存放AppDelegate、.plist、.strings等相關檔案。
七、ViewModel:
該模組放在最後,並不是說他不重要;前面的是MVC用到的,ViewModel主要是用在MVVM中。如同Model一樣可以根據需要在其下面建立不同業務的檔案夾:
上面的結構都是自己在項目中總結出來的,很多都是借鑒androi的,目的只有一個更好用更清楚明白。當然不同的人有不同見解,希望交流。