该技能用于在 Swift 中通过显式所有权修饰符优化性能,主要覆盖 borrowing(借用)、consuming(消耗)、inout(就地修改)以及不可复制类型(~Copyable)。
适用场景:大值类型以只读方式传递以避免拷贝、处理 ~Copyable 类型、减少 ARC retain/release 流量、消费 builder 对象的工厂方法,以及性能剖析确认存在拷贝的热点代码。不适用场景:Int、Bool 等小类型;编译器优化已足够的情况;可读性优先;不确定性能影响时。
主要能力与用法:borrowing 表示调用方保留所有权、只读、拷贝需显式写 copy;consuming 表示所有权转移、调用后原值失效;inout 表示调用方保留但允许就地修改。默认行为:函数参数多为 borrowing,初始化器参数与属性 setter 多为 consuming,方法 self 为 borrowing。~Copyable 类型的方法必须显式标注 borrowing 或 consuming。常见模式包括:大结构体只读参数、consuming 工厂方法、借用参数中显式 copy、consume 运算符转移所有权、不可复制类型的 read/close 模式、借用参数降低 ARC 流量、consuming 方法消费 self。
限制:~Copyable 类型不能存入 Array、Dictionary、Set,多数泛型与协议一致性受限,闭包默认按值捕获,不支持存在类型(any ~Copyable);需用 <T: ~Copyable> 约束。常见编译错误包括借用参数被隐式拷贝、不可复制类型用于泛型、对借用参数转移所有权以及缺少所有权修饰符。判断是否使用时可参考:~Copyable 必需;大值类型频繁传递时只读用 borrowing、最终使用用 consuming;剖析可见 ARC 流量时同理,否则交给编译器选择。
引用资源:Swift Evolution SE-0377、WWDC 2024-10170,以及 axiom-swift-performance、axiom-swift-concurrency 技能。安装命令、价格与收费信息暂未提供。