特性(Attributes)
1.0 翻译:Hawstein 校对:numbbbbb, stanzhai
2.0 翻译+校对:KYawn
2.1 翻译:小铁匠Linus
特性提供了有关声明和类型的更多信息。在Swift中有两种特性,分别用于修饰声明和类型。
您可以通过以下方式指定一个特性:符号@
后跟特性的名称和特性接收的任何参数:
@
特性名
@
特性名
(特性参数
)
有些声明特性通过接收参数来指定特性的更多信息以及它是如何修饰某个特定的声明的。这些特性的参数写在圆括号内,它们的格式由它们所属的特性来定义。
自动闭包 和 函数类型。
convention
该特性用于修饰函数类型,它指出了函数调用的约定。
convention 特性总是与下面的参数之一一起出现。
-
swift
参数用于表示一个 Swift 函数引用。这是 Swift 中函数值的标准调用约定。 -
block
参数用于表示一个 Objective-C 兼容的块引用。函数值会作为一个块对象的引用,块是一种id
兼容的 Objective-C 对象,其中嵌入了调用函数。调用函数使用 C 的调用约定。 -
c
参数用于表示一个 C 函数引用。函数值没有上下文,不具备捕获功能,同样使用 C 的调用约定。
使用 C 函数调用约定的函数也可用作使用 Objective-C 块调用约定的函数,同时使用 Objective-C 块调用约定的函数也可用作使用 Swift 函数调用约定的函数。然而,只有非泛型的全局函数、局部函数以及未捕获任何局部变量的闭包,才可以被用作使用 C 函数调用约定的函数。
escaping
在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 escaping
声明特性的函数类型中访问属性和方法时不需要显式地使用 self.
。关于如何使用 escaping
特性的例子,请参阅 逃逸闭包。
特性语法
特性 → @ 特性名 特性参数子句可选
特性名 → 标识符
特性参数子句 → ( 均衡令牌列表可选 )
特性列表 → 特性 特性列表可选
均衡令牌列表 → 均衡令牌 均衡令牌列表可选
均衡令牌 → ( 均衡令牌列表可选 )
均衡令牌 → [ 均衡令牌列表可选 ]
均衡令牌 → { 均衡令牌列表可选}
均衡令牌 → 任意标识符,关键字,字面量或运算符
均衡令牌 → 任意标点除了 (,),[,],{,或 }