Attributes
属性
Attributes provide more information about a declaration or type. There are two kinds of attributes in Swift, those that apply to declarations and those that apply to types.
属性は、宣言または型に関するより多くの情報を提供します。スウィフトには2種類の属性があります、宣言に適用されるもの、そして型に適用されるもの。
You specify an attribute by writing the @
symbol followed by the attribute’s name and any arguments that the attribute accepts:
あなたは、@
記号に続いてその属性の名前そしてその属性が受け入れる任意の引数を書くことによって属性を指定します:
@attribute name
@attribute name(attribute arguments)
Some declaration attributes accept arguments that specify more information about the attribute and how it applies to a particular declaration. These attribute arguments are enclosed in parentheses, and their format is defined by the attribute they belong to.
若干の宣言属性は、属性に関するより多くの情報とそれが特定の宣言に適用される方法を指定する引数を受け入れます。これらの属性引数は丸括弧に囲まれます、そして、それらの形式はそれらが属している属性によって定義されます。
Declaration Attributes
宣言属性
You can apply a declaration attribute to declarations only.
あなたは、宣言属性を宣言だけに適用することができます。
available
Apply this attribute to indicate a declaration’s lifecycle relative to certain Swift language versions or certain platforms and operating system versions.
この属性を適用することで、ある宣言の寿命を、特定のスウィフト言語バージョンまたは特定のプラットホームおよびオペレーティングシステムバージョンに関して示してください。The
available
attribute always appears with a list of two or more comma-separated attribute arguments. These arguments begin with one of the following platform or language names:
available
属性は、常に2つ以上のコンマで区切られた属性引数とともに現れます。これらの引数は、以下のプラットホームまたは言語名の1つで始まります。iOS
iOSApplicationExtension
macOS
macOSApplicationExtension
watchOS
watchOSApplicationExtension
tvOS
tvOSApplicationExtension
swift
You can also use an asterisk (
*
) to indicate the availability of the declaration on all of the platform names listed above. Anavailable
attribute specifying a Swift version availability can’t use the asterisk.
あなたはまた、アスタリスク(*
)を使って上でリストされるプラットホーム名の全てでその宣言の有効性を指し示すことができます。スウィフトバージョン有効性を指定しているavailable
属性は、アスタリスクを使うことができません。The remaining arguments can appear in any order and specify additional information about the declaration’s lifecycle, including important milestones.
そのままの引数は、任意の順番で現れることができます、そして重要なマイルストーンを含む、その宣言のライフサイクルについての追加の情報を指定できます。The
unavailable
argument indicates that the declaration isn’t available on the specified platform. This argument can’t be used when specifying Swift version availability.
unavailable
引数は、その宣言が指定されたプラットホーム上で利用可能でないことを指し示します。この引数は、スウィフトバージョン利用可能性を指定する時に使われることはできません。The
introduced
argument indicates the first version of the specified platform or language in which the declaration was introduced. It has the following form:
introduced
引数は、そこにおいてその宣言が導入されたところの、指定されたプラットホームまたは言語の最初のバージョンを指し示します。それは、以下の形式を持ちます:introduced: version number
The version number consists of one to three positive integers, separated by periods.
バージョン番号は、ビリオドで区切られた、1つから3つの正の整数から成ります。The
deprecated
argument indicates the first version of the specified platform or language in which the declaration was deprecated. It has the following form:
deprecated
引数は、そこにおいてその宣言が非推奨とされたところの、指定されたプラットホームまたは言語の最初のバージョンを指し示します。それは、以下の形式を持ちます:deprecated: version number
The optional version number consists of one to three positive integers, separated by periods. Omitting the version number indicates that the declaration is currently deprecated, without giving any information about when the deprecation occurred. If you omit the version number, omit the colon (
:
) as well.
随意のバージョン番号は、ビリオドで区切られた、1つから3つの正の整数から成ります。バージョン番号の省略は、宣言が現れた時についてのどんな情報も与えることなく、その宣言が現在は非推奨であることを示します。あなたがこのバージョン番号を省略したならば、コロン(:
)も同様に省いてください。The
obsoleted
argument indicates the first version of the specified platform or language in which the declaration was obsoleted. When a declaration is obsoleted, it’s removed from the specified platform or language and can no longer be used. It has the following form:
obsoleted
引数は、そこにおいてその宣言が廃止とされたところの、指定されたプラットホームまたは言語の最初のバージョンを指し示します。ある宣言が廃止された場合は、それは指定されたプラットホームまたは言語から取り除かれます、そしてもはや使用されることはできません。それは、以下の形式を持ちます:obsoleted: version number
The version number consists of one to three positive integers, separated by periods.
バージョン番号は、ビリオドで区切られた、1つから3つの正の整数から成ります。The
message
argument is used to provide a textual message that’s displayed by the compiler when emitting a warning or error about the use of a deprecated or obsoleted declaration. It has the following form:
message
引数は、非推奨または廃止された宣言の使用について警告やエラーを発するときにコンパイラによって表示されるテキストメッセージを提供するために使用されます。それは、以下の形式を持ちます:message: message
The message consists of a string literal.
messageは、文字列リテラルから成ります。The
renamed
argument is used to provide a textual message that indicates the new name for a declaration that’s been renamed. The new name is displayed by the compiler when emitting an error about the use of a renamed declaration. It has the following form:
renamed
引数は、改名された宣言の新しい名前を指し示すテキストメッセージを提供するために使用されます。新しい名前は、改名された宣言の使用についてのエラーを発するときにコンパイラによって表示されます。それは、以下の形式を持ちます:renamed: new name
The new name consists of a string literal.
新しい名前は文字列リテラルからなります。You can use the
renamed
argument in conjunction with theunavailable
argument and a type alias declaration to indicate to clients of your code that a declaration has been renamed. For example, this is useful when the name of a declaration is changed between releases of a framework or library.
あなたは、renamed
引数をunavailable
引数および型エイリアス宣言と連携して使うことで、あなたのコードのクライアントに宣言が改名されたを指し示すことができます。例えば、これは宣言の名前がフレームワークまたはライブラリのリリースの間で変更されたときに役に立ちます。// First release (最初のリリース)
protocol MyProtocol {
// protocol definition (プロトコル定義)
}
// Subsequent release renames MyProtocol (続くリリースでMyProtocolに改名する)
protocol MyRenamedProtocol {
// protocol definition (プロトコル定義)
}
@available(*, unavailable, renamed: "MyRenamedProtocol")
typealias MyProtocol = MyRenamedProtocol
You can apply multiple
available
attributes on a single declaration to specify the declaration’s availability on different platforms and different versions of Swift. The declaration that theavailable
attribute applies to is ignored if the attribute specifies a platform or language version that doesn’t match the current target. If you use multipleavailable
attributes the effective availability is the combination of the platform and Swift availabilities.
あなたは、複数のavailable
属性を単一の宣言上に適用することで、その宣言の利用可能性を異なるプラットホームおよび異なるバージョンのスウィフトに関して指定することができます。available
属性を適用される宣言は、その属性が現在の対象と合致しないプラットホームまたは言語バージョンを指定するならば無視されます。あなたが複数のavailable
属性を使うならば、有効な利用可能性はプラットホームとスウィフト利用可能性の組み合わせとなります。If an
available
attribute only specifies anintroduced
argument in addition to a platform or language name argument, the following shorthand syntax can be used instead:
available
属性がただ1つのintroduced
引数をプラットホームまたは言語名引数に加えて指定するならば、以下の略記構文が代わりに利用可能です:@available(platform name version number, *)
@available(swift version number)
The shorthand syntax for
available
attributes allows for availability for multiple platforms to be expressed concisely. Although the two forms are functionally equivalent, the shorthand form is preferred whenever possible.
available
属性のための略記構文は、複数のプラットホームに対する有効性を許可して簡略に表されるようにします。2つの書式は機能的に等しいですが、可能であればいつでも略記書式が好ましいです。@available(iOS 10.0, macOS 10.12, *)
class MyClass {
// class definition
}
An
available
attribute specifying a Swift version availability can’t additionally specify a declaration’s platform availability. Instead, use separateavailable
attributes to specify a Swift version availability and one or more platform availabilities.
スウィフトバージョン利用可能性を指定しているavailable
属性は、さらに加えて宣言の持つプラットホーム利用可能性を指定することはできません。代わりに、available
属性を使うことで、スウィフトバージョン利用可能性と1つ以上のプラットホーム利用可能性を指定してください。@available(swift 3.0.2)
@available(macOS 10.12, *)
struct MyStruct {
// struct definition
}
discardableResult
Apply this attribute to a function or method declaration to suppress the compiler warning when the function or method that returns a value is called without using its result.
この属性を関数またはメソッド宣言に適用して、値を返す関数やメソッドがそれの結果を使うことなく呼び出された時にコンパイラが警告を発するのを抑制してください。GKInspectable
Apply this attribute to expose a custom GameplayKit component property to the SpriteKit editor UI. Applying this attribute also implies the
objc
attribute.
この属性を適用することであつらえのGameplayKitコンポーネントプロパティをSpriteKitエディタUIに露出してください。この属性を適用することはまた、objc
属性も暗に意味します。nonobjc
Apply this attribute to a method, property, subscript, or initializer declaration to suppress an implicit
objc
attribute. Thenonobjc
attribute tells the compiler to make the declaration unavailable in Objective-C code, even though it’s possible to represent it in Objective-C.
この属性をメソッド、プロパティ、添え字、およびイニシャライザ宣言に適用することで、暗黙的にobjc
属性となるのを抑制してください。nonobjc
属性は、コンパイラにその宣言がObjective-Cコードにおいて利用不可にされることを伝えます、たとえそれがObjective-Cにおいて表現可能であってもです。Applying this attribute to an extension has the same effect as applying it to every member of that extension that isn’t explicitly marked with the
objc
attribute.
この属性をある拡張に適用することは、明示的にobjc
属性で印されていないその拡張のあらゆるメンバにそれを適用することと同じ効果を持ちます。You use the
nonobjc
attribute to resolve circularity for bridging methods in a class marked with theobjc
attribute, and to allow overloading of methods and initializers in a class marked with theobjc
attribute.
あなたは、objc
属性で印されるクラスの中のブリッジしているメソッドに対する循環性を解決するために、そしてobjc
属性で印されるクラスにおいてメソッドとイニシャライザをオーバーロードすることを許可するためにnonobjc
属性を使います。A method marked with the
nonobjc
attribute can’t override a method marked with theobjc
attribute. However, a method marked with theobjc
attribute can override a method marked with thenonobjc
attribute. Similarly, a method marked with thenonobjc
attribute can’t satisfy a protocol requirement for a method marked with theobjc
attribute.
nonobjc
属性で印されるメソッドは、objc
属性で印されるメソッドをオーバーライドできません。しかしながら、objc
属性で印されるメソッドはnonobjc
属性で印されるメソッドをオーバーライドすることができます。同様に、nonobjc
属性で印されるメソッドは、objc
属性で印されるメソッドに対するプロトコル要件を満たすことは出来ません。NSApplicationMain
Apply this attribute to a class to indicate that it’s the application delegate. Using this attribute is equivalent to calling the
NSApplicationMain(_:_:)
function.
この属性をあるクラスに適用することで、それがアプリケーション委任であることを指し示してください。この属性を使用することは、NSApplicationMain(_:_:)
関数を呼ぶことに相当します。If you don’t use this attribute, supply a
main.swift
file with code at the top level that calls theNSApplicationMain(_:_:)
function as follows:
あなたがこの属性を使わないならば、NSApplicationMain(_:_:)
関数を呼ぶトップレベルコードを持つmain.swift
ファイルを以下のように提供してください:import AppKit
NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
NSCopying
Apply this attribute to a stored variable property of a class. This attribute causes the property’s setter to be synthesized with a copy of the property’s value—returned by the
copyWithZone(_:)
method—instead of the value of the property itself. The type of the property must conform to theNSCopying
protocol.
この属性をクラスの格納変数プロパティに適用してください。この属性は、プロパティのセッターがそのプロパティの値のコピー ―copyWithZone(_:)
メソッドによって返されるもの ― を使って合成されるようにします、プロパティそれ自体の値ではなく。プロパティの型は、NSCopying
プロトコルに準拠しなければなりません。The
NSCopying
attribute behaves in a way similar to the Objective-Ccopy
property attribute.
NSCopying
属性は、Objective-Cのcopy
プロパティ属性に似たやり方でふるまいます。NSManaged
Apply this attribute to an instance method or stored variable property of a class that inherits from
NSManagedObject
to indicate that Core Data dynamically provides its implementation at runtime, based on the associated entity description. For a property marked with theNSManaged
attribute, Core Data also provides the storage at runtime. Applying this attribute also implies theobjc
attribute.
この属性をNSManagedObject
から継承するクラスのインスタンスメソッドまたは格納変数プロパティに適用することで、関連する実体記述に基づいて、Coreデータが動的にそれの実装に実行時に提供されることを指し示してください。NSManaged
属性で印されるプロパティに対して、Coreデータはまたストレージを実行時に提供します。この属性を適用することはさらにまたobjc
属性も意味します。objc
Apply this attribute to any declaration that can be represented in Objective-C—for example, nonnested classes, protocols, nongeneric enumerations (constrained to integer raw-value types), properties and methods (including getters and setters) of classes, protocols and optional members of a protocol, initializers, and subscripts. The
objc
attribute tells the compiler that a declaration is available to use in Objective-C code.
この属性をObjective-Cにおいて表わされることができる何らかの宣言に適用してください ― 例えば、入れ子にされないクラス、プロトコル、総称体でない列挙(整数の生の値型に制限される)、クラスのプロパティとメソッド(ゲッターやセッターを含む)、プロトコルおよびあるプロトコルのオプショナルメンバ、イニシャライザ、そして添え字など。objc
属性は、コンパイラにある宣言がObjective-Cコードにおいて使われることが可能であるのを伝えます。Applying this attribute to an extension has the same effect as applying it to every member of that extension that isn’t explicitly marked with the
nonobjc
attribute.
この属性をある拡張に適用することは、その拡張のあらゆるメンバで明示的にnonobjc
属性で印されていないものにそれを適用することと同じ効果を持ちます。The compiler implicitly adds the
objc
attribute to subclasses of any class defined in Objective-C. However, the subclass must not be generic, and must not inherit from any generic classes. You can explicitly add theobjc
attribute to a subclass that meets these criteria, to specify its Objective-C name as discussed below. Protocols that are marked with theobjc
attribute can’t inherit from protocols that aren’t marked with this attribute.
コンパイラは、Objective-Cにおいて定義されたあらゆるクラスのサブクラスに暗黙的にobjc
属性を加えます。しかしながら、サブクラスは総称体である必要はありません、そして何らかの総称体クラスから継承する必要はありません。あなたは、明示的にobjc
属性をこの基準に合うサブクラスに適用して、下で議論されるように、それのObjective-C名を指定できます。objc
属性で印されるプロトコルは、この属性で印されないプロトコルから継承できません。The
objc
attribute is also implicitly added in the following cases:
objc
属性はまた、以下の場合において暗黙的に加えられます:The declaration is an override in a subclass, and the superclass’s declaration has the
objc
attribute.
その宣言は、サブクラスの中のオーバーライドである、そしてそのサブクラスの宣言がobjc
属性を持つ。The declaration satisfies a requirement from a protocol that has the
objc
attribute.
その宣言は、objc
属性を持つあるプロトコルからの要件を満たす。The declaration has the
IBAction
,IBOutlet
,IBDesignable
,IBInspectable
,NSManaged
, orGKInspectable
attribute.
その宣言は、IBAction
、IBOutlet
、IBDesignable
、IBInspectable
、NSManaged
、またはGKInspectable
を持つ。
If you apply the
objc
attribute to an enumeration, each enumeration case is exposed to Objective-C code as the concatenation of the enumeration name and the case name. The first letter of the case name is capitalized. For example, a case namedvenus
in a SwiftPlanet
enumeration is exposed to Objective-C code as a case namedPlanetVenus
.
あなたがobjc
属性をある列挙に適応したならば、個々の列挙ケース節はObjective-Cコードに列挙名とそのケース節名を連結したものとして暴露されます。ケース節の最初の文字は大文字で書かれます。例えば、スウィフトのPlanet
列挙の中のvenus
と名付けられるケース節は、Objective-CコードにPlanetVenus
と名付けられるケース節として暴露されます。The
objc
attribute optionally accepts a single attribute argument, which consists of an identifier. The identifier specifies the name to be exposed to Objective-C for the entity that theobjc
attribute applies to. You can use this argument to name classes, enumerations, enumeration cases, protocols, methods, getters, setters, and initializers. If you specify the Objective-C name for a class, protocol, or enumeration, include a three-letter prefix on the name, as described in Conventions in Programming with Objective-C. The example below exposes the getter for theenabled
property of theExampleClass
to Objective-C code asisEnabled
rather than just as the name of the property itself.
objc
属性は、任意にただ1つだけ属性引数を受け入れます、それはひとつの識別子から成ります。この識別子は、Objective-Cへと暴露される名前をobjc
属性を適用される存在に対して指定します。あなたはこの引数を、クラス、列挙、列挙ケース、プロトコル、メソッド、ゲッター、セッター、そしてイニシャライザに名前をつけるために使うことができます。あなたがObjective-C名をクラス、プロトコル、または列挙に指定するならば、ある3文字接頭辞をその名前に含めて下さい、ConventionsでProgramming with Objective-Cにおいて記述されるように。以下の例は、ExampleClass
のenabled
プロパティのためのゲッターをObjective-Cコードに、ただプロパティそれ自身の名前ではなくisEnabled
として露出します。class ExampleClass: NSObject {
@objc var enabled: Bool {
@objc(isEnabled) get {
// Return the appropriate value (適切な値を返す)
}
}
}
objcMembers
Apply this attribute to any class declaration that can have the
objc
attribute. Theobjc
attribute is implicitly added to Objective-C compatible members of the class, its extensions, its subclasses, and all of the extensions of its subclasses.
この属性をobjc
属性を持つことができる何らかのクラス定義に適用してください。objc
属性は、暗黙的にそのクラスのObjective-C互換メンバー、それの拡張、それのサブクラス、そしてそれのサブクラスの拡張の全てに加えられます。Most code should use the
objc
attribute instead, to expose only the declarations that are needed. If you need to expose many declarations, you can group them in an extension that has theobjc
attribute. TheobjcMembers
attribute is a convenience for libraries that make heavy use of the introspection facilities of the Objective-C runtime. Applying theobjc
attribute when it isn’t needed can increase your binary size and adversely affect performance.
ほとんどのコードは、objc
属性を代わりに使って、必要とされる宣言だけを露出するべきです。あなたが多くの宣言を露出する必要があるならば、あなたはそれらをobjc
属性を持つある拡張にまとめることができます。objcMembers
属性は、Objective-Cランタイムの自己観察便宜の重度の使用を生じさせるライブラリにとって好都合です。それが必要とされない時にobjc
属性を適用することは、あなたのバイナリサイズを増加させ性能に逆効果です。testable
Apply this attribute to
import
declarations for modules compiled with testing enabled to access any entities marked with theinternal
access-level modifier as if they were declared with thepublic
access-level modifier. Tests can also access classes and class members that are marked with theinternal
orpublic
access-level modifier as if they were declared with theopen
access-level modifier.
この属性をテストすることを可能にされた状態でコンパイルされたモジュールに対するimport
宣言に適用することで、internal
アクセス水準修飾子で印されるあらゆる実在に、まるでそれらがpublic
アクセス水準修飾子を使って宣言されたかのようにアクセスしてください。これらのテストはまた、internal
またはpublic
アクセス水準修飾子で印を付けられるクラスおよびクラスメソッドにアクセスできます、まるでそれらがopen
アクセス水準修飾子で宣言されたかのように。UIApplicationMain
Apply this attribute to a class to indicate that it’s the application delegate. Using this attribute is equivalent to calling the
UIApplicationMain
function and passing this class’s name as the name of the delegate class.
この属性をあるクラスに適用することで、それがアプリケーション委任であることを指し示してください。この属性を使用することは、UIApplicationMain
関数を呼んで、このクラスの名前を委任クラスの名前として渡すことに相当します。If you don’t use this attribute, supply a
main.swift
file with code at the top level that calls theUIApplicationMain(_:_:_:_:)
function. For example, if your app uses a custom subclass ofUIApplication
as its principal class, call theUIApplicationMain(_:_:_:_:)
function instead of using this attribute.
あなたがこの属性を使わないならば、UIApplicationMain(_:_:_:_:)
関数を呼ぶトップレベルでのコードを持つmain.swift
ファイルを提供してください。例えば、あなたのアプリがそれの主役クラス(プリンシパルクラス)としてUIApplication
のあつらえのサブクラスを使うならば、UIApplicationMain(_:_:_:_:)
関数をこの属性を使用する代わりに呼んでください。
Declaration Attributes Used by Interface Builder
インターフェイスビルダーで使用される宣言属性
Interface Builder attributes are declaration attributes used by Interface Builder to synchronize with Xcode. Swift provides the following Interface Builder attributes: IBAction
, IBOutlet
, IBDesignable
, and IBInspectable
. These attributes are conceptually the same as their Objective-C counterparts.
いくつかのインターフェイスビルダー属性は、Xcodeと同期するためにインターフェイスビルダーによって使用される宣言属性です。スウィフトは、以下のインターフェイスビルダー属性を提供します:IBAction
、IBOutlet
、IBDesignable
、そしてIBInspectable
。これらの属性は、概念的にそれらのObjective-Cでの対応物と同じものです。
You apply the IBOutlet
and IBInspectable
attributes to property declarations of a class. You apply the IBAction
attribute to method declarations of a class and the IBDesignable
attribute to class declarations.
あなたは、IBOutlet
とIBInspectable
属性をクラスのプロパティ宣言に適用します。あなたは、IBAction
属性をクラスのメソッド宣言に、そしてIBDesignable
属性をクラス宣言に適用します。
Applying the IBAction
, IBOutlet
, IBDesignable
, or IBInspectable
attribute also implies the objc
attribute.
IBAction
、IBOutlet
、IBDesignable
、またはIBInspectable
を適用することはまた、objc
も適用します。
Type Attributes
型属性
You can apply type attributes to types only.
あなたは、型属性を型だけに適用することができます。
autoclosure
This attribute is used to delay the evaluation of an expression by automatically wrapping that expression in a closure with no arguments. Apply this attribute to a parameter’s type in a method or function declaration, for a parameter of a function type that takes no arguments and that returns a value of the type of the expression. For an example of how to use the
autoclosure
attribute, see Autoclosures and Function Type.
この属性は、ある式の評価を、自動的にその式を引数のないクロージャの中に包み込むことによって延期するために使用されます。この属性を、メソッドまたは関数宣言においてあるパラメータの型に対して、引数を持たずそして式の型の値を返す関数型のあるパラメータのために、適用してください。autoclosure
属性を使用する方法の例として、自動クロージャと関数型を見てください。convention
Apply this attribute to the type of a function to indicate its calling conventions.
この属性を関数の型に適用して、それの呼出規約を示してください。The
convention
attribute always appears with one of the attribute arguments below.
convention
属性は、常に以下の属性引数とともに現れます。The
swift
argument is used to indicate a Swift function reference. This is the standard calling convention for function values in Swift.
swift
引数は、スウィフト関数参照を示します。これは、スウィフトにおける関数値のための標準的な呼出規約です。The
block
argument is used to indicate an Objective-C compatible block reference. The function value is represented as a reference to the block object, which is anid
-compatible Objective-C object that embeds its invocation function within the object. The invocation function uses the C calling convention.
block
引数は、あるObjective-C互換プロック参照を示します。この関数値はそのプロックオブジェクトへの参照として表現されます、それはid
互換Objective-Cオブジェクトで、それの呼出関数がそのオブジェクト内部に埋め込まれます。この呼出関数はC呼出規約を使います。The
c
argument is used to indicate a C function reference. The function value carries no context and uses the C calling convention.
c
引数は、C関数参照を示すために使われます。関数値は、コンテキストを持ち運ばず、C呼出規約を使います。
A function with C function calling conventions can be used as a function with Objective-C block calling conventions, and a function with Objective-C block calling conventions can be used as a function with Swift function calling conventions. However, only nongeneric global functions, and local functions or closures that don’t capture any local variables, can be used as a function with C function calling conventions.
C関数呼出規約を持つ関数は、Objective-Cブロック呼出規約を持つ関数として使用されることができます、そしてOblective-Cブロック呼出規約を持つ関数は、スウィフト関数呼出規約を持つ関数として使用されることができます。しかしながら、非総称体グローバル関数だけは、つまり全くローカル変数をキャプチャしないローカル関数またはクロージャは、C関数呼出規約を持つ関数として使われることができます。escaping
Apply this attribute to a parameter’s type in a method or function declaration to indicate that the parameter’s value can be stored for later execution. This means that the value is allowed to outlive the lifetime of the call. Function type parameters with the
escaping
type attribute require explicit use ofself.
for properties or methods. For an example of how to use theescaping
attribute, see Escaping Closures.
この属性をメソッドや関数宣言の中のパラメータの型に適用して、そのパラメータの値がその後の実行のために保管されることができるのを指し示してください。これは、その値が呼び出しのライフタイムより長生きするのを許されることを意味します。escaping
型属性を持つ関数型パラメーターは、明示的なself.
の使用をプロパティやメソッドに対して必要とします。escaping
属性を使う方法の例として、脱出クロージャを見てください。
Grammar of an attribute
属性の文法
attribute
→
@
attribute-nameattribute-argument-clauseopt
attribute-name → identifier
attribute-argument-clause
→
(
balanced-tokensopt)
attributes → attributeattributesopt
balanced-tokens → balanced-tokenbalanced-tokensopt
balanced-token
→
(
balanced-tokensopt)
balanced-token
→
[
balanced-tokensopt]
balanced-token
→
{
balanced-tokensopt}
balanced-token → Any identifier, keyword, literal, or operator 任意の識別子、キーワード、リテラル、または演算子
balanced-token
→
Any punctuation except (
, )
, [
, ]
, {
, or }
任意の句読点、しかし(
、)
、[
、]
、{
、または}
を除く
Copyright © 2018 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2018-03-29