根据 Swift Programming Language Guide (for Swift 4.2) 中的“内存安全”一章,有一句话“A function has long-term write access to all its in-out parameters”。 https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html
我创建了一个新的命令行工具项目来在 Xcode 10.1 中验证它。
var stepSize = 1
func increment(_ number: inout Int) {
print(stepSize)
}
increment(&stepSize)
我希望输出为 1,但实际输出是崩溃日志“同时访问 0x100587430,但修改需要独占访问”。
我知道这是关于访问输入输出参数的冲突,但我不知道为什么会这样。为什么一个函数对其所有输入输出参数都有长期写入权限?