大学时曾经做过android的开发,目前的工作是iOS的开发。之前自己记录东西都是通过自己比较喜欢的笔记类的应用记录下了。直到前段时一个哥们拉着我注册了一个博客。现在终于想明白了,博客这个东西受众会稍微广泛一些,自己写的比较粗烂的东西可以得到大家的指正,可能有一点点比较好的东西可以给大家提供一个思路,有交流才会有更大的进步嘛。废话不多说了。

  首先多人开发我还是比较倾向于使用XIB的,因为SB的多人开发并不是很方便。XIB又比纯代码布局界面更加直观,虽然有的时候我也会使用Masonry布局,但基本都是业务需要的时候。所以controller的解耦就变的比较重要了,push到下一个下一个controller的时候就不用非得import下一个controller类了,让多人合作的的时候不用过多的import,当然大量import会加大系统资源的开销,还会造成后期项目的维护性变差。下面我将结合正在工作项目和自己的心得写写。

  我就结合工程的代码介绍一下吧,文章最后会贴上我的代码地址。

  YRouterNavigationController是继承的系统的UINavigationController。主要的就是在AppDelegate里面实现把controller存储到config数组(此数组主要的功能是让唯一的URL和controller的名字一一对应),以便pop的时候去检查,并形成统一的风格。设置rootcontroller,push,pop,present等的就不再介绍了(push,pop,present的时候用的NSURL,可能不是很方便,大家可以在我的上面封装一个方法把str转换成url就可以啦)。基本上都是对系统方法的一个封装。我感觉找到解藕的最核心的是OC的runtime有这么一个方法——NSClassFromString,哈哈

  UIViewController+YRouterUIViewControllerCategory是一个UIViewController的Category。为什么要使用Category呢?主要是考虑到还有tableviewcontroller等的controller,tableviewcontroller也是uiviewcontroller的一个子类嘛。这样大家就都具有了本Category的技能了。另外push或者present的时候可以带一个字典的参数,这个参数是query的dic,其实本质上传参数还是用的KVC,只不过相当于把controller和参数做了一个绑定,就没有耦合度那么高的KVC了。这个传参的query实际使用到了objc_setAssociatedObject和objc_getAssociatedObject,哈哈没有接触过的同学自行google。啊,还有,controller默认设置了leftBarButtonItem(作为pop的返回),如果用不到的时候,请自行设置其为nil。

代码地址:https://coding.net/u/ysk/p/YRouter/git

  先写这么多吧。这个方案可能还会有很多不足之处,如果你参考了本方案,发现了不足,务必在下面评论告诉我,多谢啦。

 
 
 
 
 

iOS controller解耦探究实现——第一次写博客的更多相关文章

  1. 第一次写博客,关于前端开发deMVC在js中的应用

    对前端MVC MVC分别是model.view.controller的缩写,模型.视图.控制器.这些更加偏向于后台,在以前MVC是只属于后台的.当然随着技术的进步,前端的大牛们将后台的一些东西应用于前 ...

  2. 第一次写博客Poj1044

    Date bugs Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3005   Accepted: 889 Descript ...

  3. HDU 2064 菜鸡第一次写博客

    果然集训就是学长学姐天天传授水铜的动态规划和搜索,今天讲DP由于困意加上面瘫学长"听不懂就是你不行"的呵呵传授,全程梦游.最后面对连入门都算不上的几道动态规划,我的内心一片宁静,甚 ...

  4. 第一次写博客,就写如何向外行介绍自己做的是什么,那个我是做web的

    如果想外行问你是做什么的,改如何回答.和内行说java后台就可以了,但外行听不懂,我们该如何描述呢? 我的方法是:我做的是java web开发,不是内外的外,是个英文单词web,全名叫world wi ...

  5. Magazine Ad CodeForces - 803D(二分 + 贪心,第一次写博客)

    Magazine Ad The main city magazine offers its readers an opportunity to publish their ads. The forma ...

  6. 谈谈自己对C语言中函数指针的一些理解 (第一次写博客,有点小兴奋哈)

    1.函数指针声明的格式及简单的使用 (1)格式:(返回值)(*函数指针名)(参数列表)    例如:声明一个无参数无返回值的函数指针(void)(*p)(void). (2)将函数指针指向某个无参数无 ...

  7. sikuli+eclipse对于安卓app自动化测试的应用(第一次写博客,有些语言还不太专业,望海涵)

    Sikuli是什么? 下面是来自于官网的介绍:Sikuli is a visual technology to automate and test graphical user interfaces ...

  8. ViewPager实现自动翻页功能 --转载出处找不到了,根据自己的理解写个随笔方便以后的记忆以及代码的共享,感谢给我启发的那位高手--第一次写博客哈

    xml文件 textview 用于显示图片的标题 viewpager 用于实现翻页效果 <LinearLayout xmlns:android="http://schemas.andr ...

  9. 写一下SPFA和迪杰斯特拉的模版。。。第一次写博客,有错请提出哦!

    SPFA的模版 #include<bits/stdc++.h> using namespace std; queue <int> q; typedef pair <int ...

随机推荐

  1. 继电器是如何成为CPU的(1)

    继电器是如何成为CPU的(1) ——<穿越计算机的迷雾>整理和总结 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深.本系列文章从初中学的最简单的电路图说起,看看能不能从最初的 ...

  2. 富文本编辑器Simditor的简易使用

    最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...

  3. NET Core-学习笔记(四)

    经过前面分享的三篇netcore心得再加上本篇分享的知识,netcore大部分常用知识应该差不多了,接下来将不会按照章节整合一起分享,因为涉及到的东西整合到一起篇幅太大了,所以后面分享将会按照某一个知 ...

  4. C++内联函数

    在C语言中,我们使用宏定义函数这种借助编译器的优化技术来减少程序的执行时间,那么在C++中有没有相同的技术或者更好的实现方法呢?答案是有的,那就是内联函数.内联函数作为编译器优化手段的一种技术,在降低 ...

  5. WCF基础

    初入职场,开始接触C#,开始接触WCF,那么从头开始学习吧,边学边补充. SOA Service-Oriented Architecture,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...

  6. Android Studio快捷键

      一.android studio 默认快捷键 刚开始接触一款开发软件,想必很想了解它的快捷方式,这会对你的编程起到很好的帮助,提高工作效率,接下来给你介绍下Android Studio一些常用的快 ...

  7. Android Retrofit 2.0 使用-补充篇

    推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...

  8. zookeeper(单机/集群)安装与配置

    一.安装与单机配置 1.下载: wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz 如果网站下载不了 ...

  9. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  10. EasyPR--开发详解(6)SVM开发详解

    在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...