在尝试研究ionut参数时,我遇到了一个代码示例。
此代码引发一个错误:
执行被中断,原因:信号SIGABRT。进程在被中断的地方留下,使用“线程返回-x”返回表达式计算前的状态。
然而,当试图在一个真正的项目上失败时,po char 1。
var num1: Int = 1
var char1 = "a"
func changeNumber(num: Int) {
var num = num
num = 2
print(num) // 2
print(num1) // 1
}
changeNumber(num: num1)
func changeChar(char: inout String) {
char = "b"
print(char) // b
print(char1) // b
}
changeChar(char: &char1)请解释为什么会发出此错误,以及如何修复?
发布于 2021-04-02 14:34:40
错误应该位于堆栈跟踪的顶部:
Simultaneous accesses to 0x109fac098, but modification requires exclusive access.当您将char1作为inout参数传递给changeChar时,在该函数返回之前以任何其他方式访问char1都是内存冲突。
有关详细信息,请参阅在Swift 4中添加此限制的SE-176强制执行对内存的独占访问。。
https://stackoverflow.com/questions/66920640
复制相似问题