浅谈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。
     到这里布局架构就介绍完了,到时候在更新图片啦。

时间: 2024-08-05 01:19:43

浅谈IOS的代码布局<一>的相关文章

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架 前言 小的作为一个iOS程序猿,可能研究JavaScript以及H5相关的知识并不是为了真正的要去转行做这一方面,其实更多的为了要研究OC中的JavaScriptCore框架,JavaScriptCore框架主要是用来实现iOS与H5的交互.当然了,最早我曾经写过iOS浅谈webView的JS一种用法.(去掉web显示页的广告),这种算得上最简单的iOS与H5的交互了.现在混合编程越来越多,H5的相对讲多,所以研究J

浅谈iOS中的RunLoop

首先解释下为什么是浅谈,主要是RunLoop这个东西不单单是iOS的范畴,还涉及到操作系统,我指的浅谈仅仅针对ios上层应用,底层的东西概不涉及 ,所以只能浅谈浅谈了. 在浅谈RunLoop之前我们来写个小demo,超级简单,一个按钮,然后给按钮一个断点 这块标记了1,2,3,4 红色的字:其实这是这个APP启动的一个过程 但是说好了浅谈RunLoop为啥又扯到APP的启动了 ? 先不要在意这些细节... 我先来解释下我标出的1,2,3,4分别是啥东西 1,dyld :这是啥子鬼了? the d

浅谈iOS中MVVM的架构设计与团队协作【转载】

今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人了. 说到架构设计和团队

IOS中 浅谈iOS中MVVM的架构设计与团队协作

今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与

OC iOS开发 代码布局

代码布局抛弃storyboard,用代码生成界面,它的优劣不谈 首先在项目设置中,更改应用的“入口” 不选main,清空它 然后在AppDelegate.m中,更改(添加内容),别忘了import 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 // Override point for customization

Object-C iOS纯代码布局 一堆代码可以放这里!

前言: 最近写的文章都是创业类,好吧,今天好好写写技术类的文章! 不过分享的不是IOS相关的文章,毕竟这几天在速成IOS,看的是objective-c,由于速成的很快,好累! 好在现在基本已经入了点门道了,这才看的懂新人的代码,才能提前感受代码危机. 对于IOS的速成口诀,回头再分享,今天先分享一个简单的抽象封装! 1:先看看问题 说明:通常对于界面布局,有编写代码.Xib.Storyboard三种方式,而我看到新人写的,是通过代码布局的. 看到的代码是这样的: A:编写UI的代码已分离到新的类

浅谈iOS面试所遇问题

今天面试的公司之前在百科搜索了解了一些信息,一家专业拉手媒体运营商,付费通方便了用户出行,很喜欢公司的氛围. 言归正传,面对面试官的时候还是多少会有点小紧张,有几个问题回答的也是很笼统,现在做出总结.如下: 自我面试轻轻飘过~ 这个是常识 个人信息稍作了解,常识+1 浅谈MVC框架设计模式 浅谈单例设计模式 KVC/KVO Switch开关点击出错(on状态点击依旧on状态,解决方法) cell单元格重用出现的错误(解决方法) 怎样实现代理传值 怎样实现ImageView的点击事件处理 HTTP

寒冬之下,移动开发没人要了? 浅谈 iOS 开发者该 何去何从?

前言: 作者 | 梅梅    文章来源 CSDN 对于移动互联网而言,2018 年像是球场上的一声裁判哨.哨声响起,高潮迭起的上半场结束.本该再创辉煌的下半场,还没开赛却被告之:规则改变.场地收缩.教练下课.冷板凳无限加长. 这样前途未卜的下半场,你还敢上吗? 作为队伍「前锋」的移动端程序员,面对这样的挑战,又有哪些不一样的表现和前景?本文将结合招聘数据和候选人采访,展现移动端程序员「冰火两重天」的 2018 年. 2018:移动端上半场宣告结束 纵观近几年的平台数据,虽然移动端市场供需从 20

浅谈iOS单元测试

什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等.总的来说,单元就是人为规定的最小的被测功能模块. iOS中单元测试有什么意义? 大型项目开发,功能比较繁琐,代码量比较大,调试某一块功能需要不断的Command+R运行调试,很显然这样的功能是非常非常的低效的,编写过程中以及App功能完成后