@available(*, deprecated, renamed: “新方法名称”) 标记此方法即将被废弃,变更为“新方法”
@available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) 、@available(iOS 14.0, *) 标记当前适用的版本,向上兼容
@available(iOSApplicationExtension, unavailable) 在做应用扩展(桌面的weight)的时候可以使用此标记的扩展或方法
@objc 标记的类、属性、方法,使用了动态运行时, dynamic 为动态分发,swift默认为静态
@MainActor 标记的方法只可以在主线程调用
@discardableResult 标记的方法,不接收返回值也不会出现警告。
@escaping 标记闭包为逃逸闭包
@autoclosure 自动闭包,把一个表达式自动转换成闭包
@_exported 通常出现在第三方模块中,将该模块中的所有文件导入,可能会造成文件名耦合
@Sendable 表明闭包或函数类型符合 Sendable 协议,这意味着在并发域之间传输是安全的
@dynamicMemberLookup
声明了@dynamicMemberLookup后,即使属性没有定义,但是程序会在运行时动态的查找属性的值,调用subscript(dynamicMember member: String)方法来获取值。
subscript(dynamicMember member: String)方法的返回值类型根据访问属性的类型决定。
由于安全性的考虑,如果实现了这个特性,返回值不能是可选值,一定要有值返回。
@_silgen_name(“C文件中的方法名”) 标记的方法为C文件中的方法的别名
@IBDesignable 自定义UIView类的时候,标记此类为storyboard可以直接使用
@IBInspectable 给UIView类扩展属性的时候,标记的属性可以在storyboard中展示
@IBAction 标记的方法和storyboard中有关联
@IBOutlet 标记的属性和storyboard中有关联
@inline(never) 标记的函数永远不会内联 @inline(_ _always) 标记的方法永远会内联
@frozen 标记此结构体或枚举在以后的版本升级中,结构体的存储实例属性不会改变。
@_functionBuilder 标记的 struct,允许使用 SwiftUI 的语法糖
@inlinable 将此属性应用于函数、方法、计算属性、下标、便利初始化器或反初始化器声明,以将该声明的实现作为模块公开接口的一部份公开,标记后的方法会作为内联方法
@_disfavoredOverload 当存在多个同名重载方法的时候,默认顺序为 无参、普通参数、泛型参数,使用此标记可降低方法的重载被调用的次序
@warn_unqualified_access 对可能出现重名的属性和方法标记,在使用的时候就会出现警告,多用于第三方中使用
@resultBuilder 结果构造器(待验证)使用此标记可以制作与swiftUI类似的控件出来,还需要实现测试
@propertyWrapper 属性包装器 (待验证)