Guides and Sample Code

Developer

The Swift Programming Language (Swift 4.1)

iBooks
On This Page

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. An available 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 the unavailable 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引数および型エイリアス宣言と連携して使うことで、あなたのコードのクライアントに宣言が改名されたを指し示すことができます。例えば、これは宣言の名前がフレームワークまたはライブラリのリリースの間で変更されたときに役に立ちます。

    1. // First release (最初のリリース)
    2. protocol MyProtocol {
    3. // protocol definition (プロトコル定義)
    4. }
    1. // Subsequent release renames MyProtocol (続くリリースでMyProtocolに改名する)
    2. protocol MyRenamedProtocol {
    3. // protocol definition (プロトコル定義)
    4. }
    5. @available(*, unavailable, renamed: "MyRenamedProtocol")
    6. 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 the available attribute applies to is ignored if the attribute specifies a platform or language version that doesn’t match the current target. If you use multiple available attributes the effective availability is the combination of the platform and Swift availabilities.
あなたは、複数のavailable属性を単一の宣言上に適用することで、その宣言の利用可能性を異なるプラットホームおよび異なるバージョンのスウィフトに関して指定することができます。available属性を適用される宣言は、その属性が現在の対象と合致しないプラットホームまたは言語バージョンを指定するならば無視されます。あなたが複数のavailable属性を使うならば、有効な利用可能性はプラットホームとスウィフト利用可能性の組み合わせとなります。

If an available attribute only specifies an introduced 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つの書式は機能的に等しいですが、可能であればいつでも略記書式が好ましいです。

  1. @available(iOS 10.0, macOS 10.12, *)
  2. class MyClass {
  3. // class definition
  4. }

An available attribute specifying a Swift version availability can’t additionally specify a declaration’s platform availability. Instead, use separate available attributes to specify a Swift version availability and one or more platform availabilities.
スウィフトバージョン利用可能性を指定しているavailable属性は、さらに加えて宣言の持つプラットホーム利用可能性を指定することはできません。代わりに、available属性を使うことで、スウィフトバージョン利用可能性と1つ以上のプラットホーム利用可能性を指定してください。

  1. @available(swift 3.0.2)
  2. @available(macOS 10.12, *)
  3. struct MyStruct {
  4. // struct definition
  5. }
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. The nonobjc 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 the objc attribute, and to allow overloading of methods and initializers in a class marked with the objc attribute.
あなたは、objc属性で印されるクラスの中のブリッジしているメソッドに対する循環性を解決するために、そしてobjc属性で印されるクラスにおいてメソッドとイニシャライザをオーバーロードすることを許可するためにnonobjc属性を使います。

A method marked with the nonobjc attribute can’t override a method marked with the objc attribute. However, a method marked with the objc attribute can override a method marked with the nonobjc attribute. Similarly, a method marked with the nonobjc attribute can’t satisfy a protocol requirement for a method marked with the objc 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 the NSApplicationMain(_:_:) function as follows:
あなたがこの属性を使わないならば、NSApplicationMain(_:_:)関数を呼ぶトップレベルコードを持つmain.swiftファイルを以下のように提供してください:

  1. import AppKit
  2. 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 the NSCopying protocol.
この属性をクラスの格納変数プロパティに適用してください。この属性は、プロパティのセッターがそのプロパティの値のコピーcopyWithZone(_:)メソッドによって返されるもの ― を使って合成されるようにします、プロパティそれ自体の値ではなく。プロパティの型は、NSCopyingプロトコルに準拠しなければなりません。

The NSCopying attribute behaves in a way similar to the Objective-C copy 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 the NSManaged attribute, Core Data also provides the storage at runtime. Applying this attribute also implies the objc 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 the objc attribute to a subclass that meets these criteria, to specify its Objective-C name as discussed below. Protocols that are marked with the objc 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, or GKInspectable attribute.
    その宣言は、IBActionIBOutletIBDesignableIBInspectableNSManaged、または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 named venus in a Swift Planet enumeration is exposed to Objective-C code as a case named PlanetVenus.
あなたが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 the objc 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 the enabled property of the ExampleClass to Objective-C code as isEnabled rather than just as the name of the property itself.
objc属性は、任意にただ1つだけ属性引数を受け入れます、それはひとつの識別子から成ります。この識別子は、Objective-Cへと暴露される名前をobjc属性を適用される存在に対して指定します。あなたはこの引数を、クラス、列挙、列挙ケース、プロトコル、メソッド、ゲッター、セッター、そしてイニシャライザに名前をつけるために使うことができます。あなたがObjective-C名をクラス、プロトコル、または列挙に指定するならば、ある3文字接頭辞をその名前に含めて下さい、ConventionsProgramming with Objective-Cにおいて記述されるように。以下の例は、ExampleClassenabledプロパティのためのゲッターをObjective-Cコードに、ただプロパティそれ自身の名前ではなくisEnabledとして露出します。

  1. class ExampleClass: NSObject {
  2. @objc var enabled: Bool {
  3. @objc(isEnabled) get {
  4. // Return the appropriate value (適切な値を返す)
  5. }
  6. }
  7. }
objcMembers

Apply this attribute to any class declaration that can have the objc attribute. The objc 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 the objc attribute. The objcMembers attribute is a convenience for libraries that make heavy use of the introspection facilities of the Objective-C runtime. Applying the objc 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 the internal access-level modifier as if they were declared with the public access-level modifier. Tests can also access classes and class members that are marked with the internal or public access-level modifier as if they were declared with the open 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 the UIApplicationMain(_:_:_:_:) function. For example, if your app uses a custom subclass of UIApplication as its principal class, call the UIApplicationMain(_:_:_:_:) 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と同期するためにインターフェイスビルダーによって使用される宣言属性です。スウィフトは、以下のインターフェイスビルダー属性を提供します:IBActionIBOutletIBDesignable、そして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.
あなたは、IBOutletIBInspectable属性をクラスのプロパティ宣言に適用します。あなたは、IBAction属性をクラスのメソッド宣言に、そしてIBDesignable属性をクラス宣言に適用します。

Applying the IBAction, IBOutlet, IBDesignable, or IBInspectable attribute also implies the objc attribute.
IBActionIBOutletIBDesignable、または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 an id-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 of self. for properties or methods. For an example of how to use the escaping attribute, see Escaping Closures.
この属性をメソッドや関数宣言の中のパラメータの型に適用して、そのパラメータの値がその後の実行のために保管されることができるのを指し示してください。これは、その値が呼び出しのライフタイムより長生きするのを許されることを意味します。escaping型属性を持つ関数型パラメーターは、明示的なself.の使用をプロパティやメソッドに対して必要とします。escaping属性を使う方法の例として、脱出クロージャを見てください。

Grammar of an attribute
属性の文法

attribute attribute-name­attribute-argument-clause­opt­

attribute-name identifier­

attribute-argument-clause balanced-tokens­opt­

attributes attribute­attributes­opt­

balanced-tokens balanced-token­balanced-tokens­opt­

balanced-token balanced-tokens­opt­

balanced-token balanced-tokens­opt­

balanced-token balanced-tokens­opt­

balanced-token Any identifier, keyword, literal, or operator   任意の識別子、キーワード、リテラル、または演算子

balanced-token Any punctuation except , , , , , or
任意の句読点、しかし()[]{、または}を除く