浅谈IOS的代码布局<一>
在我们需要开发一个ios应用的时候,我们通常会首先考虑到应用的开发框架。ios开发基于纯代码布局和xib,storyboard布局有差异,这里只讨论到纯代码布局。因为纯代码的布局在代码迁移中效率更高,重用更加方便。
一般一个ios应用会分为logic层(处理逻辑的类),UI层(处理界面的类),网络层(处理网络接口),基础层(一些第三方控件或者是自己编写的工具类),属性基类(全局性的通用属性类或者是logic层面用到的特定属性类)。其中,基础层和网络层的代码是可以在每个项目中迁移使用的,所以我们可以把他们封装起来,制作成一个静态库或者是动态库,方便迁移。
logic层主要会有哪些内容呢,这里我把logic定义为MVC中的控制层,也就是Controller,当我们需要制作一个界面的时候,我们通常会首先创建一个类别,就是UIViewController类,(当然我知道很多人喜欢把UIViewController当成了一个界面的集合,就是一个controllor一个界面,logic和界面实现都在这里面完成)。但是,在这里,我并不提倡这么做,以为这样不利于我们把logic层和UI层切割出来。那么,我们还有什么方法呢,我这里提供一个思路,在我们创建的UIViewController 时,也创建一个UIView,我们把Controller里面的self.view交给新创建的UIView处理。也就是说,我们可以通过方法去操作界面,而并不是自己内部解决。那么,我们在logic层中,要做的事情会有处理通知和回调,提交网络申请,状态和权限处理等。在大界面的处理中,这里的代码可能已经非常的庞大,当然,这里需要基础层去分担很大一部分的繁杂功能。也就是说,logic层,将会是UI,网络,基础层的汇集中心,他接受他们给过来的信息,然后处理分发出去,这就是logic层的具体功能。
UI层会有哪些呢,其实,一个完整的界面,UI层需要做的事情非常的多(他的事情并不比logic层少),所以,我们有必要把UI跟logic彻底的分离开。首先,UI层可能处理的东西远远要比你一开始想像的要多,匹配iphone4,iphone5,iphone6(目前iphone5和iphone6用的尺寸比例一样,但是图片的@2x,@3x不同,当然有工具能自动识别),ipad,还有可能匹配横屏,竖屏。光是匹配的UI处理都足够的将一个简单的界面变得复杂。如果是一个复杂的UI界面,你可能还会处理到动画效果,图文混排(当然,这里也会需要到基础层的帮忙)。当然,UI的基本功能还是接到logic层的命令,去改变界面的状态。
网络层,这个是最简单的层面,他要做的事情非常简单,就是接口链接和调试。通常一个常用的网络基类和一个接口分类。一般,50左右的接口放在一个接口分类中是合理的。网络基类比方说是ASIHTTPRequest ,他主要处理掉一些数据的传输格式和返回状态就足够了。至于分类,则处理接口的参数,传输方式(post或get),(返回参数不建议在这里处理,因为通常会在logic层直接被调用,所以在logic层处理)。当然,可能会有一些视频,data类型的传输,会涉及到断点续存等,这些,将会由特殊的工具类完成,这里仅仅用于和后台的简单数据传输。
基础类, 也可以说是工具层,这里处理一下繁杂但比较通用的功能。比如说动画操作,图文混排,输入栏聊天工具,自定义的相册还有各种自定义控件。还有各种各样的平时用到的功能(所以,一般分为比较复杂的base类和较为简单的unite类)。一般base类需要由多个文件配合完成,而简单的unite则只需要用到一个。
属性类,他的功能也十分简单,全局性的比如说用户类,或者仅仅用于某些公用场景需要几个logic层去共同传递和使用的特殊类属性,主要方便于规范传递中数据的类型,也可以规范一个logic所要用到的数据类型,这里可以定义为MVC中的Model。
到这里布局架构就介绍完了,到时候在更新图片啦。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。