MacDev 板


LINE

※ 引述《tkdmaf (皮皮快跑)》之铭言: : https://gist.github.com/tkdmaf/19790d5bb9f0f3c5070b0d3f364d7071 : 各位如果有空,可以测试这里面的code吗? : 有个很奇怪的不确定是不是苹果爸爸的Bug..... : 这当中,只要sub层的Codable中的property假设型态都是String时。 : 只要总合加起来是「14」个,在某些版本或装置上就会闪退…… : (或是我测过String有13个,Int有2个,这种情形也会闪退) : 有测试的,麻烦请告知: : CPU:Intel或是M1 : XCode版本、iOS装置及版本(请至少测三种,而且一定要测 15.4) : 如果最终认定是apple的Issue,可能有必要回报给apple了。 : (我在执行公司的专案中……意外的发现了这个状况。) : 在几个line群组,有测试的回应有的人会闪退,有的人不会…… : 有点神奇…… 本来想说修改文章好还是回自己的文章好。 想了想还是回文吧。 首先,这个问题比较神奇的是同样的Code有人会闪退有人不会闪退。 就算同样是iOS 15.4也是有人闪有人不闪。(也不确定跟手机型号有没关系) 然後就在昨天深夜某位朋友传讯息给我并改了我写的东西加了一点让我自己看。 因为昨晚累的半死我没什麽思考能力,早上才又问他。 大致得到的结论是: 因为struct是call by value。 在跨thread回传资料时可能因为某个条件符合导致回传(组语显示的是mov) 可能从这个记忆体搬到另一个位置时出些了不可预期的问题。 但如果改用class来宣告Codable的资料结构的话。 因为class是call by reference,不会有记忆体搬迁(mov的行为)。 而是跨thread後仍然是参考原本的记忆体位置,所以就没有带出那个不可预期的问题。 当然这都只是猜测。虽然测试上来说,确实改成class来宣告Codable时就不会产生 这样的问题。而且通常都是用於网路资料请求,所以也不太可能发生记忆体参考泄漏的 状况。 总之……就是一个我专案突然闪退让我花了很长的时间一个一个去测才测出这奇怪 闪退的规则(我暂时称之为14个String的结构bug,当然不只有14个String的状况会 发生,不同的型态,有可能会造成这个数字的增减……估计可能跟该属性占用的byte有 关连………) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.158.168.152 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1651151835.A.9A5.html
1F:推 lemontea0328: ParentData 改成 class 就不会闪退 36.226.90.67 04/29 14:25
2F:→ lemontea0328: 真是奇妙... 36.226.90.67 04/29 14:25
3F:→ lemontea0328: https://imgur.com/BlGYMt6 36.226.90.67 04/29 14:35
4F:→ lemontea0328: 改这样的话用struct似乎不会坏 36.226.90.67 04/29 14:36
我也不明白为什麽改这样就不会坏。 但是改成这样就变成同步运行而不是非同步运行了。 一个wait处理完才接下去处理後面的。 (解决callback hell的话,这招反倒是挺好用就是了。但我原本的需求是 同时并发,并等待,虽然有传统的NSOperation,但觉得作法比较「罗唆」。)
5F:推 tomhawkreal: 楼上 这表示struct经不起并行存取 36.226.148.87 04/29 14:54
6F:→ tomhawkreal: 不知古典模式是否也如此 36.226.148.87 04/29 14:54
7F:→ lemontea0328: swift-evolution 36.226.90.67 04/29 15:23
8F:→ lemontea0328: 0304-structured-concurrency.md 36.226.90.67 04/29 15:23
9F:→ lemontea0328: 这种写法尚未支援 36.226.90.67 04/29 15:23
10F:→ lemontea0328: https://imgur.com/i0wARyL 36.226.90.67 04/29 15:24
※ 编辑: tkdmaf (49.158.168.152 台湾), 04/29/2022 22:52:17
11F:推 appleway: 如果是不同threads 读取资料出问题,你 73.162.181.33 04/29 23:32
12F:→ appleway: 是是看把var 都改成let 73.162.181.33 04/29 23:32
13F:→ appleway: 试试看 73.162.181.33 04/29 23:33
14F:→ tkdmaf: 楼上,我提供的范例是var,但原本是let, 49.158.168.152 04/30 04:29
15F:→ tkdmaf: 情况没变 49.158.168.152 04/30 04:29
16F:推 ethanhuang13: 我跟 Pofat 试过。觉得是编译器的 114.36.67.179 05/08 12:15
17F:→ ethanhuang13: bug。换回 Xcode 13.2.x 就没问题 114.36.67.179 05/08 12:15
如果是编译器的问题的话,基本上……仍然算是苹果爸爸的锅。 ※ 编辑: tkdmaf (49.158.168.152 台湾), 05/08/2022 22:44:11
18F:→ ethanhuang13: 那当然。13.3 以上小问题不少,我 114.36.67.179 05/09 13:31
19F:→ ethanhuang13: 继续用 13.2.1 114.36.67.179 05/09 13:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP