iOS相关感悟和观点

简要回顾

从2012年底转行移动互联网以来,一路坎坷,当时选iOS,纯粹是看着和C比较像,并且是对象C,感觉这个很厉害。另外,XCode良好的编程体验也是一个原因。
“男怕选错行,女怕嫁错郎”。iOS也就是从2010年左右开始热起来,经典的iPhone4,到现在也就六七年左右,现在的iOS开发也已经体现出日薄西山的感觉。web前端将替代移动客户端,大前端趋势不可阻挡,JavaScript将一统前端。开发者为什么不能和睦相处,非要砸别人饭碗才好?
如果要做技术,Java后端才是王道,大前端基本都是打零工的职业,年轻人升级打怪用的。
这4年多来,亲身经历和见证了iOS从兴起到强盛再到现在的日渐式微,也算是经历过。
iOS相关技术选择的分歧比较大,以下观点只代表了个人观点。

Swift vs Object-C?

  • Swift出来的第一天,看了一个星期左右的资料,果断选择Swift,准备抛弃Object-C。不过到目前为止,还是Object-C用得多,人得面对现实。

  • 编程范式有面向过程,面向对象,面向函数三种。面向过程是基础,大家都有,这个没有争论。Object-C专门的面向对象;Swift既可以面向对象,也可以面向函数。

  • Swift更重视安全性,可选类型,guard关键字,defer关键字等等都是具体体现

  • Swift对C++的兼容性不好,还离不开Object-C作为中间的胶水层。很多优秀的第三方库还是Object-C的。

现在,是时候从Object-CSwift迁移了

  • 老项目是Object-C开发的,怎么办?
    (1)将系统最低支持版本升级到iOS8,引入framework进行管理
    (2)将网络访问,缓存,基础工具等功能模块独立出来,包装成framework,用Swift实现
    (3)将一些逻辑模块独立出来,用framework包装,改造成Swift
    (4)将界面层用Swift实现一遍,完成迁移
    (5)如果需要保留Object-C的,也用framework包装起来,进行隔离,等时机成熟再改造

  • 至于新项目,当然直接上Swift了,虽然没有runtime,只是麻烦一点,功能还是都能做到的。至于Object-C的第三方库什么的,用一个framework包装一下就好了。

故事版 vs 纯代码?

  • 个人支持故事版,当然代码写界面是免不了的,不过能不用代码就不用代码。

  • 没有代码就没有bug,所见即所得,更直观

  • 至于模块划分,版本冲突问题,多用几个故事版就可以解决了

  • 至于性能影响,这里还不是瓶颈,可以忽略。性能优化,还是从自己的代码找原因比较好。

Carthage vs CocoaPod?

  • 个人喜换Carthage,但是平时见得多的还是CocoaPod

  • Carthage可以强化framework的使用

  • Carthage耦合更松散,隔离性更好

Native vs JavaScript?

  • 虽然大前端概念很热,本人还是坚持NativeSwift的编码效率并不比JavaScript低。关键是安全,速度快,体验好。

  • 虽然React Nativeweex声称有Native的体验,不过实际上性能损失还是比较明显的。这样做的结果是将iPhone的体验和Android的体验做成一致,将一个良好的系统变成了一个普通的系统。

  • 动态化被过度强调,降成本是真实原因,所以JavaScript被热捧

  • React Nativeweex来替代H5,做活动,在保持动态化的基础上提升体验,这个是支持的。用来替代Native,降成本,本人反对。这样的话,只要Android手机就可以了,还需要iPhone干什么?

  • 苹果禁止JSPatch,只是投石问路,禁止React Nativeweex才是目的。失去开发者,失去应用商店主导权,苹果怎么生存?

  • 阿里人多,做得也很讨巧,在上weex的时候,H5的降级页面也是提供的。那天苹果要是禁了weex,只要降级到H5就可以了,对他没任何影响。

  • React Nativeweex两者一定要选一个的话,那么还是选weex。一方面,本人只接触了几个月的weex;另一方面,本人也大致看过两者,本质上差不多,不过weex做得比较彻底,支持ES6,支持vue2.0,更接近前端的编程

组件化怎么做?

  • 对页面进行url编码

  • 引入MGJRouter

  • 具体跳转写在load函数中

  • 具体的url写在集中文件中,最大程度公开

  • 可以考虑像DNS一样,对url定义做一份对照表,取个有意义的名字,方便使用

  • 将体验做得像网页访问一样

  • 参数传递尽量不要通过url携带,应该在数据层或者逻辑层采用其他通讯方式。界面层尽量薄,只做显示。做侦听,提供页面刷新函数更新。

MVVM vs MVC?

  • 个人偏向MVVM,但是遇到的基本上是MVC

  • ViewModel只做显示逻辑,不承担数据和业务逻辑等功能,比如网络访问就不应该在这里做。这个只是将界面元素的接口。

  • 增加一个xxxServiece,并且是模块级的,为页面提供逻辑和数据服务,同时为多个页面提供服务。

  • Controller不做具体的业务,只是页面的生命周期,发起函数调用即可。

网络?

  • 现在的URLSession已经很好用了,完全可以自己写

  • 没信心的话,就选AFNetworking好了

  • JSON解析直接用系统的,不需要引入其他第三方库

  • 字典模型互转,可以考虑YYModel

  • 字典转模型还是独立出来比较好,放在网络模块里反而不好管理。网络模块的输出,还是直接数组套字典比较好。

本地缓存?

  • YYCache

  • 不用数据库,更不用CoreData

图片上传下载?

  • 现在的URLSession已经很好用了,完全可以自己写

  • 本地缓存可以用YYCache

  • 图像解码,加快显示,这块自己写比较麻烦

  • 可以选择YYImage
    YYWebImage

  • 当然,选择SDWebImage也是合理的

H5通讯

  • 目前还是UIWebView比较成熟,WKWebView还有很多坑,不好用

  • 建议采用第三方库WebViewJavascriptBridge
    iOS、Android、JavaScript三端都考虑到了

  • JavaScript core也可以,毕竟weex框架有现成的例子参考

日志系统

  • 推荐使用CocoaLumberjack

  • 不要直接用阿里云接口,先传到自己的后台再说

上拉下拉

  • 推荐使用MJRefresh
    好几个地方遇到过

HUD

代码加限制

键盘管理

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

推荐阅读更多精彩内容