同时访问<地址>,但修改需要独占访问
Posted
技术标签:
【中文标题】同时访问<地址>,但修改需要独占访问【英文标题】:Simultaneous accesses to <Address>, but modification requires exclusive access 【发布时间】:2019-05-06 13:26:40 【问题描述】:我想在函数myFunc
中指定用于操作的数组属性,但出现此错误。这是我的代码草图。
self.data = MyObject()
func myFunc(x: inout [Int], y: inout [[Int]])
//manipulation code to x and y
myFunc(x: &self.data.array1, y: &self.data.array2)
myFunc(x: &self.data.array3, y: &self.data.array4)
知道如何让它工作吗?我应该为这个用例使用更好的模式吗?谢谢提前!
【问题讨论】:
什么是self,什么是data?data
是自定义类的实例
【参考方案1】:
在 Swift 文档中进行了非常详尽的解释:
https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html
基本上,您威胁要同时以两种不同的方式对同一个对象进行变异/写入。这是不连贯的,如果编译器不阻止你,运行时就会阻止。
【讨论】:
问题可能是 Swift 不能确定这些不是同一个数组。 那么如何实现这个用例呢? 不要使用 inout。 所以我的错误是:我将 inout 与类实例一起使用。我很快就遇到了这个问题:链表反转按大小为 k 的组。以上是关于同时访问<地址>,但修改需要独占访问的主要内容,如果未能解决你的问题,请参考以下文章