当前位置: 首页 > 工具软件 > Frozen > 使用案例 >

@frozen Swift(SwiftUI中文文档手册)

蓝逸仙
2023-12-01

@frozen

将此属性应用于结构或枚举声明,以限制可以对类型进行更改的种类。仅在库演化模式下编译时才允许使用此属性。library的未来版本无法通过添加,删除或重新排列枚举的案例或结构的存储实例属性来更改声明。非冻结类型允许进行这些更改,但它们会破坏冻结类型的ABI兼容性。

注意,当编译器不处于库演化模式时,所有结构和枚举都将隐式冻结,并且将忽略此属性。

在库演化模式下,与非冻结结构和枚举进行交互的代码将以某种方式进行编译,即使该库的未来版本增加,删除或重新排序了该类型的某些成员,该代码也可以继续工作而无需重新编译。编译器使用诸如在运行时查找信息并添加间接层等技术使之成为可能。将结构或枚举标记为冻结将放弃这种灵活性来获得性能:库的未来版本只能对类型进行有限的更改,但是编译器可以在与类型的成员进行交互的代码中进行其他优化。

冻结类型,冻结结构的存储属性的类型以及冻结枚举案例的关联值必须是公开的或带有usableFromInline属性标记。冻结结构的属性不能具有属性观察器,并且为存储的实例属性提供初始值的表达式必须遵循与inlinable相同的限制,如inlinable中所述。

实战代码

SwiftUI 代码如何兼容iOS 13 和 iOS 14 (教程含源码)

推荐

基础文章推荐

经典教程推荐

上新

技术源码推荐

推荐文章

CoreData篇

Combine篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

 类似资料: