V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pikoqian98
V2EX  ›  Apple

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

  •  
  •   pikoqian98 · 2022-06-29 00:54:03 +08:00 · 2158 次点击
    这是一个创建于 860 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    所以有个东西叫:Storyboard Reference

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

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

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

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

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

    不过自从换了 m1 max + 64G 内存之后,发现 Xcode 打开什么都很快了。。。。。SwiftUI 渲染也是嗖嗖的快
    pikoqian98
        10
    pikoqian98  
    OP
       2022-06-30 00:40:03 +08:00 via iPhone
    @Anewt 看了下我们工程里面打不开的这个 storyboard 里面有 5 个 vc ,没有做拆分,但是每个 vc 的控件很少,难以理解为什么 xcode 打开这种 xml 文件会这么卡,它的卡顿不像别的应用正在加载,是直接卡死了(可能我们约束使用不当会造成一定性能问题)
    pikoqian98
        11
    pikoqian98  
    OP
       2022-06-30 00:41:32 +08:00 via iPhone
    @610915518 是的,现在对 storyboard 已经有阴影了,轻易不敢点击项目中的老文件,否则就是杀进程了…
    pikoqian98
        12
    pikoqian98  
    OP
       2022-06-30 00:42:41 +08:00 via iPhone
    @vaccer 如果真的只卡半分钟,我也对 xcode 说声栓 Q 了😂
    pikoqian98
        13
    pikoqian98  
    OP
       2022-06-30 00:44:09 +08:00 via iPhone
    @lowsunndy 遇到性能问题,加钱是最好的选择😂
    lp380490944
        14
    lp380490944  
       2022-08-15 13:41:31 +08:00
    遇到同样的问题,老项目不想用纯代码重新写,但是真的卡的一笔,M1 MBP 都不行。
    pikoqian98
        15
    pikoqian98  
    OP
       2022-08-16 01:40:57 +08:00 via iPhone
    @lp380490944 感觉是 xcode 自身问题,xcode13 开始就卡的离谱
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:48 · PVG 15:48 · LAX 23:48 · JFK 02:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.