吐槽一下, storyboard 为什么会这么卡 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pikoqian98
V2EX    Apple

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

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

    公司项目涉及到一个老页面的改动,该页面是完全使用 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     Solana     3254 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 11:34 PVG 19:34 LAX 04:34 JFK 07:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86