iOS controller解藕探究实现——第一次写博客

  大学时曾经做过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

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

时间: 2024-08-08 01:27:36

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

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

对前端MVC MVC分别是model.view.controller的缩写,模型.视图.控制器.这些更加偏向于后台,在以前MVC是只属于后台的.当然随着技术的进步,前端的大牛们将后台的一些东西应用于前端,MVC就是其中之一.  走进MVC MVC三者关系图: 图片有点简单,请谅解,是第一次写,而且时间有点紧!!!  View视图 首先简单介绍一下它的工作原理与承担的业务.首先在这里我们先介绍View,它就是前端的视图界面,负责与用户的交互和拉取数据,如果说的简单点,它就是HTML文件: <!DO

《每日一博》——第一次写博客

第一次写博客,好紧张啊!说起来写博客的原因是为了让自己的学习经历以及过程能有更多的人帮忙讨论讨论(这个理由应该挺充分的吧!)---- 额,还是和大家介绍一下我自己吧! 我的网名是Tenma,真实姓名暂时不便透露,你们也可以叫我天马或者小马都可以! 我的兴趣便是计算机技术,现在也在学这方面的----希望能和更多志同道合的朋友交流交流---- <每日一博>--第一次写博客,码迷,mamicode.com

第一次写博客

2019-01-17 18:18:42 第一次写博客,记录一下. 为什么写博客? 主要是想记录一下自己的学习生活之类的吧.上一次写类似的东西还要追溯到高中吧,那时候QQ空间好像很火,我自己写了20多篇文章,时不时回忆一下高中的生活.说实话,高中应该是人生中最美好的一段时期吧.想想那个时候的主要矛盾还是在学习上吧,别的什么事情都不需要操心.年轻真好啊! 然后另一个目的就是可以通过博客来记录吧,应为我感觉好多东西看似会了,睡一觉起来就忘了,所以如果能记下来的话可以回顾嘛.然后把我遇到的一些安装和学习

纪念第一次写博客

2019 04 07 第一次写博客就记录最基础的c语言下的利用循环 使用时间戳的猜数字游戏 vs  实现 #define _CRT_SECURE_NO_WARNINGS   //  vs   下的宏定义    (scanf) #include<stdio.h> #include<stdlib.h> #include<string.h> #include <time.h> int Menu() { int choice = 0; printf("1,

2019年7月-第一次写博客

总有一句话,万事开头难,一些东西往往是从0到1的过程是最艰难的.比如我再大二就想自己写博客,把自己做的一些东西记录下来. 此时此刻,我已经大四毕业了,离开学校半个多月之久.但是我的博客到此时此刻一直没有写.我给我自己找了几个理由, 第一,时间不够充足,整理这些东西会很浪费时间. 第二,能力不够,从小语文水平较差,害怕组织不出有品位的语言. 第三,专业技术能力不够,害怕弄错. 在快要毕业的时候,由于研究生入学考试的失败,我在年后就去朋友公司实习去了,阿木实验室(www.amovauto.com)实

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

Sikuli是什么? 下面是来自于官网的介绍:Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots). Sikuli includes Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an integrated development environm

第一次写博客! PHP现况

HP历史:1994年创建,1995年对外发表第一个版本,名为:personal home page tools,之后发表PHP1.0.1995年中期,PHP2.0,从此建立了PHP在动态网站开发的地位.1997,PHP3.2000年PHP4.0.2004年7月,PHP5.0,改版以Zend II为引擎,实现面向对象. PHP的职业前景:webb3.0的升温,互联网技术发展的热潮,技术创新等特点,决定了要依靠最快卡法速度和最低成本才能取胜.PHP技术人才迎合互联网的发展趋势.降低成本,提升开发速度

第一次写博客,初学者学习JAVA,希望大家多多指导。

数组的学习 1.定义数组:int [] list = new int[]; 2.将一个数组对象传递给方法时,该方法可以直接修改数组的内容,而不需要通过返回值来实现. 例: 1 public static void incrementAll(int[]data){ 2 for(int i = 0;i<list.length;i++){ 3 data[i]++; 4 } 5 } 可以直接调用incrementAll(list); 若在方法内部定义数组要注意(1)有返回值(2)不需要数组参数 1 pu

第一次写博客,一个简单的实例:java读写txt文件,希望这是一个好的开始。

作为一名初级开发人员,每天都是在网络上寻找别人的代码,然后修修改改应用到项目中,不知不觉间,自己真的成为代码的搬运工了. 编程的乐趣是在浩瀚的知识海洋中找到自己想要的代码,共享信息,方便自己,也方便别人. 下面的代码是一个简单的java代码读取txt文件的实例.虽然简单,但是可以为零基础的新手一个入门例子. package javatest; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStr