知识卡片
独占访问权限的内存安全检查
内容
[[ARC引用计数原理|ARC]]管的是”这块内存什么时候该被释放”,独占访问权限管的是另一个正交 问题:”同一块内存在同一段时间内能不能被多个访问路径同时读写”。当满足三个条件——至少一个 访问是写、访问的是同一内存地址、访问的时间区间有重叠——就会触发冲突:典型场景是把同一个 变量既传给函数的 inout 参数(持续写权限)又在函数体内直接读取它,或者[[值类型修改属性的本质是替换|结构体的自修改方法]] 内部又通过 inout 访问了 self 的另一部分。发散:这类问题在 Swift 4 之前是允许发生但结果 未定义的”暗坑”,Swift 4 把它从沉默的逻辑错误提升为显式的运行时崩溃——再次呼应 Swift “宁可显眼地报错,也不让不确定的状态悄悄流通”的一贯设计取向。
参考来源
《Swift 4从零到精通iOS开发》第12章《Swift 4特性指南》