首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的inout参数

Swift中的inout参数
EN

Stack Overflow用户
提问于 2021-04-02 14:14:26
回答 1查看 154关注 0票数 1

在尝试研究ionut参数时,我遇到了一个代码示例。

此代码引发一个错误:

执行被中断,原因:信号SIGABRT。进程在被中断的地方留下,使用“线程返回-x”返回表达式计算前的状态。

然而,当试图在一个真正的项目上失败时,po char 1。

代码语言:javascript
复制
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)

请解释为什么会发出此错误,以及如何修复?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-02 14:34:40

错误应该位于堆栈跟踪的顶部:

代码语言:javascript
复制
Simultaneous accesses to 0x109fac098, but modification requires exclusive access.

当您将char1作为inout参数传递给changeChar时,在该函数返回之前以任何其他方式访问char1都是内存冲突。

有关详细信息,请参阅在Swift 4中添加此限制的SE-176强制执行对内存的独占访问。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66920640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档