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

不管是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行业资讯等,如果您有什么好的项目也可以发布在我们的平台,欢迎您的加入。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 161,566评论 24 692
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 124,470评论 18 136
  • 前言#### 各位同路人,小编首先声明本文不是讲什么AFN或者ASI什么的,而是借助于这些网络请求框架(如:AFN...
    摸着石头过河_崖边树阅读 503评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 29,073评论 18 398
  • 他们是带着故事来的。 很重的故事。 如果要写下来,也许要背一大箩筐。 为了把这些故事说出去,他们执拗而充满野心,暴...
    两面无欢阅读 89评论 0 0
  • github源码地址:https://github.com/zhou-you/RxEasyHttp 全局配置 一般...
    zhou_you阅读 765评论 0 1
  • 很幸运自己和小芳芳的专业同为电子商务,但是我却没“他”过的精彩; 其实我门无论在学习还是在工作的时候,不应太拘泥于...
    不二和尚阅读 81评论 0 0
  • 文/瑾懿 首先,能用钱买来的都是最便宜的。这句话已经是一个隐形的含义,意味着我们可以用钱去解决耗时间的无意义的工作...
    Elaine瑾懿阅读 67评论 0 0
  • 中学交了个笔友,她在内蒙,我在南方,彼此书信往来。后来她交了男朋友,男朋友不喜欢她跟其他男人接触,于是断了联系。去...
    零点之前说晚安阅读 110评论 0 0