Selon le chapitre "Memory Safety" du guide du langage de programmation Swift (pour Swift 4.2), il y a une phrase "Une fonction a un accès en écriture à long terme à tous ses paramètres d'entrée et de sortie". https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html
J'ai créé un nouveau projet d'outil en ligne de commande pour le vérifier dans Xcode 10.1.
var stepSize = 1
func increment(_ number: inout Int) {
print(stepSize)
}
increment(&stepSize)
Je m'attends à ce que la sortie soit 1, mais la sortie réelle est un journal d'incident "Accès simultanés à 0x100587430, mais la modification nécessite un accès exclusif".
Je sais qu'il s'agit d'un conflit concernant l'accès aux paramètres d'entrée-sortie, mais je ne sais pas pourquoi cela se produit. Pourquoi une fonction doit-elle avoir un accès en écriture à long terme à tous ses paramètres in-out ?