高仿映客之二怎样打造继承基类

不管是Model/View/ViewController,这些类都会经常用到一种继承方式,继承基类是我们在创建类的时候最常用的方式,但是你真的知道他是怎么用的吗?你真的知道怎样合理的利用OC的这个继承特性吗?

映客源码下载地址:高仿映客项目源码
映客系列详细解说目录:映客系列详细解说目录

自定义基类控制器###

下面老夫就结合高仿映客项目谈谈怎样制作我们项目需要的基类。首先想想我们为什么要继承基类,简单的来说是我们继承基类之后子类就会拥有父类所有的方法、属性、逻辑等,高仿映客中考虑到我们常用UINavigationController、UITabBarController、UIViewController,所以本项目为了扩展方便,都不是直接使用这些类,而是使用它们的子类

控制器基类.png
控制器基类.png

同时我们考虑到控制器的导航条有时候会加一些额外的东西,所以一般情况下我们都要自定义,但是我建议自定义方法是 : 隐藏系统导航条,增加自定义的导航条,这样不仅具备侧滑返回的手势效果,还实现了导航条的自定义


自定义控制器结构.png
自定义控制器结构.png

在自定义的控制器BaseVC中可以暴露子类方法

 /**
   *  添加左按钮事件响应
   *
   *  @param selector
   */
- (void)addLeftButtonSelector:(SEL)selector;
/**
  *  添加右按钮事件响应
  *
  *  @param selector
  */
- (void)addRightButtonSelector:(SEL)selector;

自定义基类模型###

我们新建一个模型类,默认都是继承于NSObject,但是一般模型都会和数据解析产生关联,所以模型类根据功能又可以分为基础模型类、数据管理模型基类、router路由器管理基类、数据存储模型基类


model基类.png
model基类.png

基础模型类功能:

/**
 *  模型转化为字典
 */
- (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行业资讯等,如果您有什么好的项目也可以发布在我们的平台,欢迎您的加入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,135评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,271评论 19 139
  • 前言#### 各位同路人,小编首先声明本文不是讲什么AFN或者ASI什么的,而是借助于这些网络请求框架(如:AFN...
    摸着石头过河_崖边树阅读 4,310评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,737评论 18 399
  • 他们是带着故事来的。 很重的故事。 如果要写下来,也许要背一大箩筐。 为了把这些故事说出去,他们执拗而充满野心,暴...
    两面无欢阅读 1,553评论 0 0

友情链接更多精彩内容