不管是Model/View/ViewController,這些類都會經(jīng)常用到一種繼承方式腮郊,繼承基類是我們在創(chuàng)建類的時候最常用的方式敢朱,但是你真的知道他是怎么用的嗎侦啸?你真的知道怎樣合理的利用OC的這個繼承特性嗎碑宴?
映客源碼下載地址:高仿映客項目源碼
映客系列詳細解說目錄:映客系列詳細解說目錄
自定義基類控制器###
下面老夫就結(jié)合高仿映客項目談?wù)勗鯓又谱魑覀冺椖啃枰幕惞8巍J紫认胂胛覀優(yōu)槭裁匆^承基類,簡單的來說是我們繼承基類之后子類就會擁有父類所有的方法航背、屬性喉悴、邏輯等,高仿映客中考慮到我們常用UINavigationController玖媚、UITabBarController箕肃、UIViewController,所以本項目為了擴展方便今魔,都不是直接使用這些類勺像,而是使用它們的子類
![控制器基類.png](http://upload-images.jianshu.io/upload_images/1886288-518bfb56b8e5f8c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
同時我們考慮到控制器的導(dǎo)航條有時候會加一些額外的東西,所以一般情況下我們都要自定義错森,但是我建議自定義方法是 : 隱藏系統(tǒng)導(dǎo)航條吟宦,增加自定義的導(dǎo)航條,這樣不僅具備側(cè)滑返回的手勢效果问词,還實現(xiàn)了導(dǎo)航條的自定義
![自定義控制器結(jié)構(gòu).png](http://upload-images.jianshu.io/upload_images/1886288-50309e5db36382e2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在自定義的控制器BaseVC中可以暴露子類方法
/**
* 添加左按鈕事件響應(yīng)
*
* @param selector
*/
- (void)addLeftButtonSelector:(SEL)selector;
/**
* 添加右按鈕事件響應(yīng)
*
* @param selector
*/
- (void)addRightButtonSelector:(SEL)selector;
自定義基類模型###
我們新建一個模型類督函,默認都是繼承于NSObject,但是一般模型都會和數(shù)據(jù)解析產(chǎn)生關(guān)聯(lián)激挪,所以模型類根據(jù)功能又可以分為基礎(chǔ)模型類、數(shù)據(jù)管理模型基類锋叨、router路由器管理基類垄分、數(shù)據(jù)存儲模型基類
![model基類.png](http://upload-images.jianshu.io/upload_images/1886288-cb9021c6023b14a4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
基礎(chǔ)模型類功能:
/**
* 模型轉(zhuǎn)化為字典
*/
- (NSDictionary *)modelToDictionary;
/**
* 字典轉(zhuǎn)化模型 (屬性值一一對應(yīng))
*/
+ (NSDictionary *)JSONKeyPathsByPropertyKey;
數(shù)據(jù)管理模型基類功能:
單例實例化管理類,并且可以增加代理監(jiān)聽
/**
* 增加代理監(jiān)聽對象
*/
- (void)addDelegateObject:(id)delegate;
/**
* 移除代理監(jiān)聽對象
*/
- (void)removeDelegateObject:(id)delegate;
/**
* 管理基類娃磺,代理回調(diào)
*
* @param aSelector 代理回調(diào)方法
* @param anArgument 參數(shù)1
* @param anotherAnArgument 參數(shù)2
*/
- (void)delegateDataMangerCallBackSelector:(SEL)aSelector withObject:(id)anArgument withAnotherObject:(id)anotherAnArgument;
router路由器管理基類功能:
實現(xiàn)頁面的跳轉(zhuǎn)
數(shù)據(jù)存儲模型基類功能:繼承于基類模型類
并增加數(shù)據(jù)庫存儲功能
/**
* 保存模型到數(shù)據(jù)庫
*/
- (void)sql_saveToDataBase;
/**
* 刪除模型到數(shù)據(jù)庫
*/
- (void)sql_deleteToDataBase;
/**
* 更新模型到數(shù)據(jù)庫
*/
- (void)sql_updateToDataBase;
自定義基類View###
UI層面的基類就不做過多的介紹比較簡單薄湿。
更多高仿映客項目解說:
映客源碼下載地址:高仿映客項目源碼
映客系列詳細解說目錄:映客系列詳細解說目錄
最后贈言###
我們團隊一直想做一個IT技術(shù)資料共享平臺,希望能幫助更多的朋友了解和學(xué)習(xí)IT技術(shù)偷卧,我們不僅提供學(xué)習(xí)視頻豺瘤、資料共享、而且還提供項目資源听诸、小功能實現(xiàn)demo并定期推送IT行業(yè)資訊等坐求,如果您有什么好的項目也可以發(fā)布在我們的平臺,歡迎您的加入晌梨。