美文网首页iOS开发功能Debug
iOS开发中“xib”与“纯代码”取舍

iOS开发中“xib”与“纯代码”取舍

作者: M_PI_4 | 来源:发表于2020-03-13 03:53 被阅读0次

一. 知名app的xib与纯代码使用情况

讨论的是:对于 UI 界面的编写工作,到底应该用 xib/storyboard 完成,还是用手写代码来完成?有一些著名的应用,它们也用到了xib

1. 像 Twitter,Mailbox,objcio 这样完全不使用 xib 做界面的情况。
2. 像 QQ、微信、滴滴打车、网易新闻、猿题库这样少量使用 xib 的情况。
3. 像支付宝、大众点评这样重度使用 xib 的情况。
说明了即使是比较著名的 App,在使用 xib/storyboard 上,也有很大的差异。

有兴趣的伙伴也可以自己使用“tangqiao”的脚本(科学一下才好打开)分析一下

其实,我们实际开发中一些简单界面的开发,我们使用xib就足够了,速度快、产出也高效。但是,我们在处理一些UI比较复杂的页面,我们使用纯代码来进行开发,在迭代和修改方面更方便,所以建议复杂的开发还是用纯代码。

二. 考虑因素

1.开发效率

纯代码编写,界面越复杂,代码量越大,复杂度也随之上升。
使用xib,可以把界面布局相关的代码,属性设置的代码,迁移到xib上,修改了什么马上可以看到效果,所见即所得,界面开发速度快很多;使用xib中的autolayout,屏幕尺寸适配也方便得多。

2.可读性

代码越多,别人读起来越费劲,使用xib,界面层的代码大量减少,可读性极好。

3.复用

纯代码可复用,xib比较难复用,有相同或相似界面,基本是复制一份过来修改,复用问题不大。

4.版本管理

代码的版本管理比较清晰成熟,大家也用得比较顺。xib因为其为xml格式文件,可读性比较差,多人同时修改同一个xib文件时会引起冲突,并且难以合并。所以,做好一个或一系列相关界面使用一个xib,避免多人同时修改一个xib引起冲突。

5.性能

纯代码的界面加载速度、运行速度是最快的,xib会稍微拉低性能,消耗更多内存,但这对多数普通界面来说,没有太大影响。需要极致的性能和速度的界面,才使用纯代码。
不管是纯代码还是xib,autolayout都不宜使用过多,超过60个,会引起卡顿。

三. 优劣

使用 xib 和 storyboard 的优点

  • 开发界面所见即所得,可以快速通过拖拽构造界面。
  • 你可以从 storyboard 中很方便地梳理出所有View Controller的界面间的调用关系。这一点对于新加入项目组的开发同事来说,比较友好。
  • 使用 Storyboard 可以使用Table View Controller的 Static Cell 功能。对于开发一些 Cell 不多,但每个 Cell 都不一样的列表类设置界面会比较方便。
  • 通过实现 – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法,每个 View Controller 的跳转逻辑都聚集在一处,这方便我们统一管理界面跳转和传递数据。
  • Storyboard 可以方便将一些常用功能模块化和复用。例如 WWDC2011 年介绍 Storyboard 的视频就将微博分享功能模块化成一个单独的 Storyboard。

使用 xib 和 storyboard 的缺点

  • xib 对版本管理是灾难。storyboard 实际上的多个 xib 的集合,所以更容易让多人编辑产生冲突。而虽然它们是 xml 格式,但是冲突解决起来还是不如代码那么容易。
  • 苹果对 xib, storyboard 的设计中带有当前电脑的操作系统版本和 Xcode 版本。所以如果两个协作的开发者电脑操作系统或 Xcode 有不一样的话,每次打开必定会修改这个文件。另外即使操作系统版本和 Xcode 版本一样,有些时候打开看也会造成一些自动的修改。
  • storyboard 带来的 segue 的概念对于开发来说并不省事,特别是在需要传递参数的时候。如果是用程序内部 trigger 一个 segue,那么需要在另一个回调的地方设置 dest view controller 的参数信息。
  • 我们发现 xib 中设置的颜色值并不精确,RGB 在真机 / 模拟器上常常会有 10 多像素的偏差。
  • xib 和 storyboard 对继承的支持并不友好。无法做界面的继承。
  • xib 和 storyboard 对搜索支持并不友好,无法方便地在 Xcode 中查找关键词(但是可以通过写 bash 命令来查找)。
  • storyboard 对组合支持得不太好,不允许在一个 xib 中附带多个子 view。
  • xib 和 storyboard 不太方便做界面的模块化管理,比如我们想统一修改界面中所有按钮的字体样式,那么在 xib 和 storyboard 只能一个一个手工修改,而如果是代码编写的,则只需要改一个工厂方法的实现即可。
  • 对于复杂的 App,storyboard 的性能会比较差。

纯代码的优点

  • 高可复用,尤其是有很多相似的控件的时候,很好管理。
  • 版本控制简单许多,多人协作更简单一些(xib线多),纯代码的话跟踪起来容易一些,合并困难度低
  • 运行效率,大概会快一点
  • 拥有代码逻辑可阅读性

纯代码的缺点

  • 调UI要思考的就一些,不那么直观
  • 写基础的UI功能都需要很久

总结:

从以往开发经验,我觉得代码+xib实现App界面,大大提高开发效率、可读性,版本管理的缺陷避免即可。现在App开发已经很成熟,企业开发基本会追求好看的界面效果、更复杂的界面布局,用纯代码实现,代码复杂度急剧加大,极有必要通过xib简化界面代码。另外,企业开发中,版本更新频繁、需求变化多,采用xib才能更快更好的响应这些变化。

参考链接


相关文章

网友评论

    本文标题:iOS开发中“xib”与“纯代码”取舍

    本文链接:https://www.haomeiwen.com/subject/jvkojhtx.html