iOS架构雏形(1)

hal

从历史开始说起

经历的公司,没有一家的iOS架构是一样的,而且相差甚远,但是总体的脉络是一样的,总体的流程也是一样的。
但是最近1年内,有个mvvm + rac + rooter 的组合,和以前的写法还是很大不一样,最大的感触就是代码写的多了,架构更复杂了,但是给其他人讲解架构的时候,变得简单了。
从js 引入过来的东西不是每个都好的反而弄巧成拙。所以我自己终结了一套mini 简单架构,各种扩展看各位项目中的具体实践了。

先来个简单粗暴的

image.png

一般客户端和前端的人,都能看到,一般技术的开发,也都能看懂,从服务端请求数据,到客户端展示。
为什么大部分的架构图都很复杂,因为技术颗粒度不一样。

1 网络

一般iOS oc 开发afn,头些年还是asi ,可惜不更新了,网络上有一个性能对比,asi 碾压afn。
个人或者企业都会对afn 进行二次封装,以对上层的数据逻辑更好的使用,其实现在的afn 已经很方便了。不过,架不住每个公司服务端的设计不一样,才有千变万化的数据请求 header 参数。

2 数据逻辑

数据逻辑的代码多少,完全看网络层的封装是不是合理,我个人认为,网络层的封装评判标准 就是数据逻辑层用的是不是简洁。
这一点,我认为还是友好 的api + 不嵌入业务的网络层+ 尽量少的设置参数 = 高效的开发。
这里就涉及到两个架构 mvc 和mvvm。不管拿一个,如果一个网络层OK ,controller 里面和viewModel 里面都会简洁明了。

到这里,可以看出,架构的好坏不在于模式,那些是工具,还是在于人。

还没有到业务

image.png

扩展一下,非逻辑的业务也是容易挪用的,更是不需要所谓组件化的部分,就是这些

1 共有模块

包括 登陆注册,分享,广告,tabbar,弹窗自定义,下拉上拉,特别动画,图片下载,时间处理 ,数据库等等,甚至是自己写的什么什么黑科技,这样的和业务仅仅是用的情况,统称共有模块。--这里我自己的意见也是和组件化本质的不一样,就是利用pod 和oc 本质有的.h 文件,所以这也是我一直不同意网上大部分组件化的方案 如图


image.png

因为这张图中的混乱是人为的架构混乱,让这个人写组件化,一样会写的如此。

2 数据解析

这个网上的第三方和自己写的都用,最关键的崩溃就是数据为空,所以,避免了这个,基本都OK yymodel, mjmodel,都是基于runtime 的属性索引方式方法

3 数据监听

app 数据收集,这个在大数据,人工智能的运起的今天,变成了单独的业务,甚至有产品专门负责。早起的友盟,现在国外的fa,可能后期还有更多,但是千万不要多个监听组件在一个app 里面,导致两个数据的收集都不准确,最后自己都不知道哪个平台是准确的。

4 分类

这个最好多人开发的时候,放到一个文件夹,避免重复分类的建立。把iOS 开发提高效率的另外的途径就是建立一套自己一直用的分类。


image.png

.....
当然还可以有很多,但是这个最好自己的都看一边,用的时候,不用重复的写。

特别业务

这个根据公司的不同,可能就开始各种变化,但是主干的确定后,不要以公司的特别产品需求而把项目的架构边的复杂。局部的复杂和全局的简洁,这个就变成了开发的拿捏,往往这个地方是最容易出问题的地方,那局部的简洁说全局的合理。
比如列表的封装,列表本身就是一个不利于封装的控件,这个是我个人的意见,封装的成了局部利用方便,全局的列表会设置一堆不必要,稳定不可查的参数。坑就这么来了。
网络底层嵌套业务,一旦需求更新,底层不适应上层业务, 更改底层,不是每个人都敢于背锅的。
这也是面试里面没有办法面试出来,所以后期期待有解决方案

其他

image.png

剩下的我个人终结 是痒点更新

日志打印

可有可无,但是如果有个很好的ui 层级打印,调用堆栈打印,也是不错的
调试的工具千千万,选一个适合你的就好。
个人比较喜欢这个
https://github.com/johnno1962/injectionforxcode
如果嵌入项目,看自己爱好。

个人发挥空间

每个人的方向爱好不一样,不能因为项目限制个人想法,建立分支,自己搞事情,这个还是一个美好的解决方案,比如 weex\rn 、rac、 js 相关的东西。还有自己写的第三方pod。甚至自己写的服务端,拿客户端练习,想象无极限....

本地数据

这个犹豫涉及到数据存储,这就涉及到加密的。加密和攻防 也是iOS开发的方向,有兴趣的可以的

小结

虽然写的比较意识流,但是看到现在网上很多倡导的架构,背离了 一个方向,就是简洁和去中心。
去中心是区块链技术的思想,项目开发中,也可以秉承这个思想。

IMG_1230.JPG

单个app 如果就访问使用压力,永远是1对1 ,这也是移动客户端开发的特点,所以,每个架构都不涉及到访问压力,和设计最优。
但是如果你的公司是多个app,模块高度复用,那么你的代码个性化和复用性就是你考虑的重点,比如上图,一个公司虽然app 里面有多个是游戏,但是,如果你公司的应用是多个,那么组件化不会让你开发效率提高,而是你的模块封装 易pod 易copy。这就是判断iOS 一个项目中你写的组建是否好的标准之一。
还有。
代码量,杀鸡用牛刀,在客户端还是很多地方看得到的,也是别人吐槽的点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容