swift中的内存安全(inout param / long term access)

时间:2018-01-26 15:37:26

标签: swift memory-safety

我正在阅读swift中的内存安全章节,并想尝试这个例子:

var stepSize = 1

func increment(_ number: inout Int) {
    number += stepSize
}

increment(&stepSize)

如果由于对stepsize变量的冲突(写入长期访问)存在冲突而导致错误,则事件实际编译并给出正确答案(即2)。

任何人都可以提供长期访问变量会导致错误的例子吗?我不能来一个。

编辑:

我在Xcode 9.2上用操场测试了

1 个答案:

答案 0 :(得分:1)

它将在操场上工作-操场上不是一个完美的模拟器。

尝试“新建->项目->单视图应用程序”
这段代码将在运行时崩溃(甚至在模拟器上),例如:

Thread 1: Simultaneous accesses to 0x6000022b4310, but modification requires exclusive access