SuperAPI AI 工具集

memory

通用与其它

查看项目

更新于 10-16 08:08

技能介绍

本技能介绍 Swift 6.2 的低层内存类型:InlineArray 提供编译期确定大小的内联存储,无堆分配;Span 系列提供对连续内存的安全、零成本访问,用于替代 UnsafeBufferPointer 等不安全指针。当用户询问 InlineArray、固定大小数组、栈分配集合,或提到 Span、MutableSpan、RawSpan、UTF8Span,或希望消除热点路径的堆分配、替换不安全指针、进行二进制解析或嵌入式 Swift 开发时适用。

主要能力:InlineArray<let count: Int, Element> 为 @frozen struct,元素连续存储,大小等于 count 乘元素 stride,支持下标访问与按索引遍历,拷贝为急切复制、无写时复制。Span 族包括只读 Span、可变 MutableSpan、字节级 RawSpan/MutableRawSpan、Unicode 文本的 UTF8Span,以及用于初始化集合存储的 OutputSpan;Array、ArraySlice、InlineArray 提供 .span 属性,Data 提供 .bytes 属性。

使用方式:用字面量初始化 InlineArray,如 let a: InlineArray<4, Int> = [1, 2, 4, 8];可变写入通过 array.withMutableSpan { span in ... } 完成。

限制:InlineArray 大小编译期固定,不支持追加、插入或删除;Span 为非逃逸类型,不能从函数返回、不能被闭包捕获,且源容器被修改后原 Span 失效,需重新获取。大型或频繁复制的集合不应使用 InlineArray,需要存储引用或跨异步边界传递内存访问时不应使用 Span。资料中部分 API 的最低版本为 Swift 6.4,具体可用性以实际环境为准。