4

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

var stepSize = 1

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

increment(&stepSize)

如果它说由于对stepsize变量的访问冲突(长期书面访问)而导致错误,它实际上会编译并给我正确的答案(即2)。

谁能举例说明长期访问变量何时会导致错误?我不能带一个。

编辑:

我在 Xcode 9.2 上的操场上进行了测试

4

1 回答 1

1

它可以在操场上工作——操场不是一个完美的模拟器。

尝试“New -> Project -> Single View App”
这段代码会在运行时崩溃(即使在模拟器上),如下所示:

Thread 1: Simultaneous accesses to 0x6000022b4310, but modification requires exclusive access
于 2019-03-25T08:29:58.267 回答