一、關(guān)于標(biāo)題
本來是要寫成 獨(dú)解 的,后來我還是服從了輸入法的旨意。
接下來主要介紹一下分類在 網(wǎng)絡(luò)請求 與 AppDelegate瘦身 中的用途。
二、網(wǎng)絡(luò)請求
網(wǎng)絡(luò)請求,使用分類?怎么使用?
在一個項(xiàng)目中的網(wǎng)絡(luò)請求一般套路都是一樣的,包括域名,加密,傳參方式等等。那么如何在套路一樣,又要在不同的模塊中共用呢?主要有這兩個方法:
- 繼承
- 分類
看主題就應(yīng)該知道,我的重點(diǎn)是 分類。到現(xiàn)在我依然還沒有發(fā)現(xiàn) 繼承 能勝過 分類 的理由。
這部分可以參考這個代碼: NetWorkEngine
簡單的介紹一下這個 NetWorkEngine
首先,有一個基本的網(wǎng)絡(luò)請求工具,就是 NetWorkEngine 這個 Class 。這個 Class 中就提供了一個很好的網(wǎng)絡(luò)請求封裝。那在項(xiàng)目開發(fā)中, 應(yīng)該如何去使用呢?
NetWorkEngine 這個 Class 一般是不用去動的,如何想要在項(xiàng)目中使用,那么先弄一個 分類 ,比如登錄模塊,那么就弄一個 NetWorkEngine+Login 分類,將所有與登錄有關(guān)的接口都放到這里。
總之,使用起來是很簡單的。大神可以通過我的代碼查看。NetWorkEngine
看了之后會不會覺得這樣使用 分類 顯得很高大上呢?
三、AppDelegate瘦身
就是 AppDelegate 文件的瘦身,避免此文件的臃腫導(dǎo)致難以維護(hù)。早上看了一個大神的文章 《AppDelegate瘦身指南》寫得很好,受益匪淺。我比較喜歡的兩個方法就是使用 FRDModuleManager 與 分類,其實(shí)之前我也想到了使用 分類 給AppDelegate瘦身,但是一直木有試過。我比較喜歡 FRDModuleManager 的原因是,所有的子模塊都準(zhǔn)守了 FRDModule 協(xié)議, 這個協(xié)議由準(zhǔn)守了 這兩個協(xié)議 UIApplicationDelegate, UNUserNotificationCenterDelegate, 所以在子模塊中,感覺就像是在 AppDelegate 中實(shí)現(xiàn)一樣,挺爽的。但是看到作者列舉的缺點(diǎn)之后,心里很不是一個滋味。
于是就想著把 FRDModuleManager 與 分類的優(yōu)點(diǎn)總結(jié)一下,可以這樣實(shí)現(xiàn):直接給 AppDelegate 通過模塊弄出分類。像這樣的:

單獨(dú)給 AppDelegate 弄一個文件夾,是我多年的習(xí)慣,這次終于能用上場了。[默許一分鐘,僅僅一分鐘]。
看到上面的圖片,感覺怎么樣?我就舉了兩個例子而已:啟動調(diào)度(Scheduler)與 推送(Push)。按照上面介紹的,可以了么?感覺沒有體現(xiàn)出 FRDModuleManager 的有點(diǎn)啊, 是的,別急。 FRDModuleManager 的優(yōu)點(diǎn)就是使用起來感覺就像是在 AppDelegate 中一樣。這樣很好了, 直接把 AppDelegate 中的方法 Copy 過來就可以了。如果你這樣做了, 別說不認(rèn)識我?。。。?!在分類中不要重寫 當(dāng)前類的方法, 這是大忌啊。那么我們應(yīng)該怎么處理呢?很簡單,就三個字 加前綴。是不是有一種預(yù)想不到的感覺。分類加前綴,多么有沒的結(jié)合!具體是這樣的:

然后在 AppDelegate 中這樣調(diào)用:

這樣就輕松的將本來在 AppDelegate 中處理的邏輯轉(zhuǎn)移到 AppDelegate+Scheduler 中,已達(dá)到了給 AppDelegate 瘦身的目的。
四、說在后面的話
其實(shí)分類是一個很好的技術(shù)方案,使用好了,真的是一把利器。但是不要濫用!