Согласно главе «Безопасность памяти» в Руководстве по языку программирования Swift (для Swift 4.2) есть предложение «Функция имеет долгосрочный доступ для записи ко всем своим входным и выходным параметрам». 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, но для модификации требуется монопольный доступ».
Я знаю, что это конфликт из-за доступа к параметрам ввода-вывода, но я не знаю, почему это происходит. Почему функция имеет долгосрочный доступ для записи ко всем своим входным и выходным параметрам?