大学时曾经做过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. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  2. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  3. .NET Core全新路线图

    .NET Core / ASP.NET Core 1 RTM发布两周后,社区也很积极,收到了非常多的反馈,上周五微软的scott Hunter 在dotnet团队官方博客上发布了.NET Core全新 ...

  4. Could not create SSL connection through proxy serve-svn

    RA layer request failedsvn: Unable to connect to a repository at URL xxxxxx 最后:Could not create SSL ...

  5. Hawk 6. 高级话题:子流程系统

    子流程的定义 当流程设计的越来越复杂,越来越长时,就难以进行管理了.因此,采用模块化的设计才会更加合理.本节我们介绍子流程的原理和使用. 所谓子流程,就是能先构造出一个流程,然后被其他流程调用.被调用 ...

  6. 用django创建一个项目

    首先你得安装好python和django,然后配置好环境变量,安装python就不说了,从配置环境变量开始 1.配置环境变量 在我的电脑处点击右键,或者打开 控制面板\系统和安全\系统 -> 左 ...

  7. javaScript生成二维码(支持中文,生成logo)

    资料搜索 选择star最多的两个 第一个就是用的比较多的jquery.qrcode.js(但不支持中文,不能带logo)啦,第二个支持ie6+,支持中文,根据第二个源代码,使得,jquery.qrco ...

  8. 分享两个BPM配置小技巧

    1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...

  9. Android 关于ijkplayer

    基于ijkplayer封装支持简单界面UI定制的视频播放器 可以解析ts格式的so库 怎样编译出可以解析ts等格式的so库?就是编译的时候需要在哪一步修改配置? 一些电视台的m3u8 CCTV1综合, ...

  10. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...