1.AppDelegate
- 可以采用模塊化方式眠砾,減輕AppDelegate的壓力:
自定義通知、極光推送帖族、融云、支付、等等事件爹凹。 - 通過load方法簡化,通過AppDelegate引入頭文件加載load方法實現但只能把初始化的一些方法在load方法中調用镶殷,AppDelegate的各個周期調用無法完善解決
2.General 通用模塊
- Base 基類
- Categories 分類
- YKTools 自己封裝的工具禾酱,視圖,第三方庫封裝等
- Models : 公共Model (公用的一些數據模型)
- Views : 公共View (封裝的一些常用的View)
2.Class 工程主體類
Main - 導航欄和tabbar搭建
App的各個模塊:
復雜模塊可以采用MVVM
簡單模塊采用MVC
模塊名
- Controllers 界面控制器存放處
- ViewModels MVVM的核心、解耦合绘趋、處理邏輯
- Views 界面相關View存放處
- Models 數據模型存放處(各種單純的數據模型颤陶,一點都不胖,是標準的瘦Model)
3.Resource 工程所需的一些資源
- Fonts 字體
- Images 圖片
- Sounds 聲音
- Videos 視頻
4.Vendors 第三方的類庫/SDK
CocoaPods管理著大部分的第三方庫陷遮,這里建立第三方庫目錄的原因有兩個:其一滓走,并不是所有的你需要的第三方都支持pods的,所以還是需要手動添加一些類庫帽馋。其二搅方,一些第三方庫雖然支持pods,但是需要我們去更改甚至自定義這個第三方绽族,此時也需要放入這里姨涡,也防止使用pods一不小心更新掉你的自定義!
UMeng项秉、WeiboSDK绣溜、WeixinSDK等等
5.Macro 宏定義模塊
- AppMacro.h app項目的相關宏定義
- NotificationMacro.h 通知相關的宏定義
- VendorMacro.h 第三方相關宏定義
- UtilsMacro.h 為簡化代碼的宏定義
模塊中用到的常量等盡量在公共文件中統(tǒng)一管理
通知使用注意事項:
1)通知的定義最好統(tǒng)一放在一個頭文件中定義好,命名也盡量規(guī)范娄蔼,比如用APP名模塊名通知名這種方
式怖喻,便于區(qū)分該通知具體實現什么目的底哗。
2)全局最好維護一個單例來進行通知的發(fā)送。并且建立一張通知發(fā)送對象的表及接收通知對象表锚沸。因
為在比較大的項目中跋选,通知使用很頻繁的情況下,很難找到對應的位置哗蜈。往往給開發(fā)埋下了嚴重的坑前标。
3)接收通知的線程,和發(fā)送通知所處的線程是同一個線程距潘。也就是說如果如果要在接收通知的時候更
新UI炼列,需要注意發(fā)送通知的線程是否為主線程。
6.CocoaPods
類庫管理音比,能用pods下載的類庫盡量用pods下載俭尖,標明當前使用的類庫版本號。
第三方庫盡量封裝再封裝一層,防止庫修改后洞翩,到處修改代碼稽犁。
- AFN
- FMDB
- MBProgressHUD
注意事項
- ViewModel 試著加入URL參數 省去每個接口重寫一個方法 // 好像不好,每個接口需要返回的數據不同
- 菊花封裝重新寫骚亿,網絡請求時菊花最好放在外面調用已亥,不統(tǒng)一調用
- NSObject 分類 定義一些常用方法(時間格式化等)
- 加簽可以放在外面,內部不在做參數處理
- 重寫label 分類不要弄成富文本的
- 顏色分類可以直接寫顏色
- button 分類也不要弄成富文本設置title
- 網絡層可以單獨封裝出來改成service層
- 簡單回調可以用block,多個回調要用代理實現
- 文件命名重復来屠,回報exit code 1錯誤
修改info.plist 路徑后會編譯報錯
解決方法:
TARGETS - 工程名 - Build Settings - Packaging - Info.plist虑椎,在后面輸入框中重新配置Supporting Files實際路徑,編譯成功的妖。