吐槽一下, storyboard 为什么会这么卡

2022-06-29 00:54:03 +08:00
 pikoqian98

公司项目涉及到一个老页面的改动,该页面是完全使用 storyboard 开发的,一打开 storayboard 页面 xcode 就完全卡住了。这个页面还是 17 年左右开发的,当年开发的时候也不是很卡顿,没想到 22 年的 Xcode(13.4.1)居然完全没法用,基本页面刚加载出来,稍微动一下鼠标 xcode 又开始转圈,打开这种 sb 、xib 页面真的考验心态。。看内存也没占用很高,倒是监视器里面 xcode 的 cpu 占用 100.5%(因为标红直接卡死无响应了),为什么苹果对开发者这么不友好,公司电脑是 19 款 16 寸的 mbp ,心态炸裂,用爽了 vscode 真的不想再碰 xcode 这种工具

2186 次点击
所在节点    Apple
15 条回复
pupboss
2022-06-29 00:56:01 +08:00
我接手过一个项目,storyboard 加载需要 2 分钟,随便动动鼠标 30 秒起步,苹果这个东西除了能降低门槛之外,就是个垃圾
pikoqian98
2022-06-29 00:59:07 +08:00
@pupboss 确实,没有被 xcode 卡过的真是体会不到这种卡顿的感觉,仿佛自己用的是上个世纪的电脑
xtinput
2022-06-29 07:52:17 +08:00
storyboard 本质上就是一个 xml ,单个 xib(xml)加载还好,如果很多界面都丢在 storyboard 里面那差不多废了
Anewt
2022-06-29 09:47:19 +08:00
如#3 所说,如果将很多界面都放在一个 Storyboard 里面,那加载必然是非常慢,还见过整个工程就用一个 Storyboard 的,#1 提到的可能就是这样一个工程

所以有个东西叫:Storyboard Reference

可以将界面,按功能模块或者其他规则,分散放入很多 Stoaryboard 里,每一个 Stoaryboard 里可能就几个界面,这样也便于团队协作开发 (大家一起编辑同一个 Storyboard 会是一场灾难)

其实个人觉得 Storyboard 很好用,只是很多人没有正确使用,能极大的降低工作量提高开发速度,viewController 里几乎看不到构建 UI 的代码,很清爽

还比如被大家吐槽的 Autolayout ,说选中某个界面元素,满屏幕的蓝色树枝杈,而且都牵一发而动全身,哈哈哈,见过的人懂我的意思,其实搭配上 UIStackView ,辅以少量的约束,非常清爽好调整

如果就是特别喜欢用代码构建 UI ,那现在其实有一个非常好的选择,就是 SwiftUI
gaoyz
2022-06-29 10:18:34 +08:00
刚开始入门的时候用了 storyboard 觉得有点香 拖拖拉拉就可以搞定 开发很快 但是之后有次升级 Xcode 发现 storyboard 加载卡的一塌糊涂 就再也不用了 至今还是纯代码 效率确实没有 storyboard 高 但是熟练以后 其实感觉还是比较舒适
610915518
2022-06-29 10:19:39 +08:00
我还是喜欢纯代码,感觉控制力更强(才不是因为界面用的不熟练
vaccer
2022-06-29 12:46:41 +08:00
改个约束几秒钟, 打开 SB 卡半分钟。。。
我还是用纯代码布局吧
xtinput
2022-06-29 13:06:26 +08:00
@610915518 是的,纯代码好控制也好修改维护
@vaccer 嗯,有时间就纯代码吧

简单的 cell 还是可以用 xib 的
lowsunndy
2022-06-29 14:41:32 +08:00
mac app 开发貌似还是离不开 storyboard ,我是从 16 年开始放弃 nib 的,一是因为卡顿效率太低,另外就是发现它有时候会有莫名其妙的 bug ,导致和代码实现的在某些系统上有兼容问题。

不过自从换了 m1 max + 64G 内存之后,发现 Xcode 打开什么都很快了。。。。。SwiftUI 渲染也是嗖嗖的快
pikoqian98
2022-06-30 00:40:03 +08:00
@Anewt 看了下我们工程里面打不开的这个 storyboard 里面有 5 个 vc ,没有做拆分,但是每个 vc 的控件很少,难以理解为什么 xcode 打开这种 xml 文件会这么卡,它的卡顿不像别的应用正在加载,是直接卡死了(可能我们约束使用不当会造成一定性能问题)
pikoqian98
2022-06-30 00:41:32 +08:00
@610915518 是的,现在对 storyboard 已经有阴影了,轻易不敢点击项目中的老文件,否则就是杀进程了…
pikoqian98
2022-06-30 00:42:41 +08:00
@vaccer 如果真的只卡半分钟,我也对 xcode 说声栓 Q 了😂
pikoqian98
2022-06-30 00:44:09 +08:00
@lowsunndy 遇到性能问题,加钱是最好的选择😂
lp380490944
2022-08-15 13:41:31 +08:00
遇到同样的问题,老项目不想用纯代码重新写,但是真的卡的一笔,M1 MBP 都不行。
pikoqian98
2022-08-16 01:40:57 +08:00
@lp380490944 感觉是 xcode 自身问题,xcode13 开始就卡的离谱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX