不管是Model/View/ViewController,这些类都会经常用到一种继承方式,继承基类是我们在创建类的时候最常用的方式,但是你真的知道他是怎么用的吗?你真的知道怎样合理的利用OC的这个继承特性吗?
映客源码下载地址:高仿映客项目源码
映客系列详细解说目录:映客系列详细解说目录
自定义基类控制器###
下面老夫就结合高仿映客项目谈谈怎样制作我们项目需要的基类。首先想想我们为什么要继承基类,简单的来说是我们继承基类之后子类就会拥有父类所有的方法、属性、逻辑等,高仿映客中考虑到我们常用UINavigationController、UITabBarController、UIViewController,所以本项目为了扩展方便,都不是直接使用这些类,而是使用它们的子类
同时我们考虑到控制器的导航条有时候会加一些额外的东西,所以一般情况下我们都要自定义,但是我建议自定义方法是 : 隐藏系统导航条,增加自定义的导航条,这样不仅具备侧滑返回的手势效果,还实现了导航条的自定义
在自定义的控制器BaseVC中可以暴露子类方法
/**
* 添加左按钮事件响应
*
* @param selector
*/
- (void)addLeftButtonSelector:(SEL)selector;
/**
* 添加右按钮事件响应
*
* @param selector
*/
- (void)addRightButtonSelector:(SEL)selector;
自定义基类模型###
我们新建一个模型类,默认都是继承于NSObject,但是一般模型都会和数据解析产生关联,所以模型类根据功能又可以分为基础模型类、数据管理模型基类、router路由器管理基类、数据存储模型基类
基础模型类功能:
/**
* 模型转化为字典
*/
- (NSDictionary *)modelToDictionary;
/**
* 字典转化模型 (属性值一一对应)
*/
+ (NSDictionary *)JSONKeyPathsByPropertyKey;
数据管理模型基类功能:
单例实例化管理类,并且可以增加代理监听
/**
* 增加代理监听对象
*/
- (void)addDelegateObject:(id)delegate;
/**
* 移除代理监听对象
*/
- (void)removeDelegateObject:(id)delegate;
/**
* 管理基类,代理回调
*
* @param aSelector 代理回调方法
* @param anArgument 参数1
* @param anotherAnArgument 参数2
*/
- (void)delegateDataMangerCallBackSelector:(SEL)aSelector withObject:(id)anArgument withAnotherObject:(id)anotherAnArgument;
router路由器管理基类功能:
实现页面的跳转
数据存储模型基类功能:继承于基类模型类
并增加数据库存储功能
/**
* 保存模型到数据库
*/
- (void)sql_saveToDataBase;
/**
* 删除模型到数据库
*/
- (void)sql_deleteToDataBase;
/**
* 更新模型到数据库
*/
- (void)sql_updateToDataBase;
自定义基类View###
UI层面的基类就不做过多的介绍比较简单。
更多高仿映客项目解说:
映客源码下载地址:高仿映客项目源码
映客系列详细解说目录:映客系列详细解说目录
最后赠言###
我们团队一直想做一个IT技术资料共享平台,希望能帮助更多的朋友了解和学习IT技术,我们不仅提供学习视频、资料共享、而且还提供项目资源、小功能实现demo并定期推送IT行业资讯等,如果您有什么好的项目也可以发布在我们的平台,欢迎您的加入。