美文网首页
Swift Dictionary 报错:EXC_BAD_ACCE

Swift Dictionary 报错:EXC_BAD_ACCE

作者: 左卫门_6e62 | 来源:发表于2020-11-11 01:29 被阅读0次

    首先关于EXC_BAD_ACCESS报错,网上介绍的最普遍的原因是访问了已释放的内存,但检查后发现内存并未释放。
    这时候可能还有个思路,Dictionary实质上是一个struct类型,使用subscript对其进行更新或添加项的操作实质上是调用了它的mutating方法。而在苹果的文档中明确了mutating方法是对self的一个long term access,在多线程环境下会出现access conflict。所以解决的方法就是避免多线程同时访问同一个dictionary。
    我首先想到的是使用objc_sync_enter和objc_sync_exit,但使用过程中会出现EXC_BREAKPOINT异常。所以只能另想办法,暂时就把代码放到DispatchQueue.main.sync中,问题解决。

    相关文章

      网友评论

          本文标题:Swift Dictionary 报错:EXC_BAD_ACCE

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