id
type to a specific Swift type.
Objective-C id
のインスタンスをSwift型にキャストします。
In Cocoa, methods that perform asynchronous operations take a completion handler as their last parameter, and the method calls that block after the operation finishes to return a result or an error. Swift 5.5 and later automatically translates Objective-C methods that take completion handlers into asynchronous methods using Swift's native concurrency support, in addition to importing the callback-based version of the method into Swift. Because both Swift methods have the same behavior, they share the same page in the documentation. Cocoaでは、非同期演算を実行するメソッドは、それの最後のパラメータとしてある完了ハンドラを、そして演算が終了する後では遮断するメソッド呼び出しいくつかをとって、結果またはエラーを返します。Swift 5.5以降は、完了ハンドラをとるObjective-Cメソッドを非同期メソッドへとSwiftの生得の並行性サポートを使って自動的に翻訳します、そのメソッドのコールバック基盤バージョンをSwiftへとインポートするのに加えて。両方のSwiftメソッドは同じ挙動を持つことから、それらは文書化において同じページを共有します。
For information about asynchronous functions, see Concurrency in The Swift Programming Language. 非同期関数についての情報として、並行性をThe Swift Programming Languageで見てください。
Swift imports Objective-C methods that take a completion handler as two related Swift methods: a method that takes a closure, and an asynchronous method that doesn’t take a closure. For example, consider the present(completion:)
method from PassKit. In Objective-C, it's declared like this:
Swiftは、完了ハンドラをとるObjective-Cメソッドを2つの同族のSwiftメソッド:あるクロージャをとるメソッド、そしてクロージャをとらない非同期メソッドとしてインポートします。例として、PassKit由来のpresent(completion:)
メソッドを考えてみてください。Objective-Cでは、それはこのように宣言されます:
However, in Swift, it’s imported as two methods: しかしながら、Swiftでは、それは2つのメソッドとしてインポートされます:
The first version, present(completion:)
, has a return type of Void
and takes a completion handler. The second version, present()
, returns a Boolean value and is an asynchronous method.
最初のバージョン、present(completion:)
は、Void
の戻り型を持ち、そしてある完了ハンドラをとります。2番目のバージョン、present()
は、ブール値を返します、そして非同期メソッドです。
Methods whose completion handlers populate a NSError
pointer parameter also become throwing methods in Swift, as described in About Imported Cocoa Error Parameters. The NSError
parameter on an asynchronous throwing method must also be nullable, which indicates that the parameter is used only to communicate an error. For example, consider the write(_:
method from URLSession
. In Objective-C, it's declared like this:
それの持つ完了ハンドラにNSError
ポインタパラメータが入っているメソッドはまた、Swiftではスローするメソッドになります、インポートされるCocoaエラーパラメータについてで記述されるように。非同期スローメソッド上のNSError
パラメータは、同様にnull可能でなければなりません、それはそのパラメータがエラーとの通信にのみ使われることを指し示します。例えば、URLSession
由来のwrite(_:
メソッドを考えてみてください。Objective-Cでは、それはこのように宣言されます:
As in the previous example, Swift imports this Objective-C method as two methods: an asynchronous method that takes a closure, and an asynchronous throwing method. 前の例でのように、SwiftはこのObjective-Cメソッドを2つのメソッドとしてインポートします:クロージャを取る非同期メソッド、そして非同期スローメソッド。
Methods whose completion handlers take multiple arguments become methods that return a tuple. For example, the sign(_:
method from PassKit is declared like this in Objective-C:
それの完了ハンドラが複数の引数をとるメソッドは、あるタプルを返すメソッドになります。例えば、PassKit由来のsign(_:
メソッドはObjective-Cにおいてこのように宣言されます:
In Swift it‘s imported as two methods, an asychronous method that takes a closure and an asynchronous throwing method that returns a tuple: Swiftではそれは2つのメソッドとしてインポートされます、あるクロージャをとる非同期メソッドそしてあるタプルを返す非同期スローメソッド:
The method that takes a completion handler must meet the following requirements: 完了ハンドラをとるメソッドは、以下の要件を満たさなければなりません:
The method has a void
return type.
そのメソッドはvoid
戻り型を持つ。
The block has a void
return type.
そのブロックはvoid
戻り型を持つ。
The block is called exactly once, on all possible paths of control flow. そのブロックは、制御の流れの全ての可能な経路上で、厳密に一回だけ呼び出される。
If the method has only one parameter and its selector ends with one of the following suffixes, Swift imports the method as an asynchronous method: メソッドがただ1つのパラメータを持つ、そしてそれのセレクタが以下の接尾辞の1つで終わるならば、Swiftはそのメソッドをある非同期メソッドとしてインポートします:
With
With
With
With
With
If the method has more than one parameter, and the last parameter's selector piece is one of the following, Swift imports the method as an asynchronous method: メソッドが1つ以上のパラメータを持つ、そして最後のパラメータの持つセレクタ部分が以下の1つであるならば、Swiftはそのメソッドをある非同期メソッドとしてインポートします:
completion
with
completion
with
completion
with
reply
with
reply
reply
The name of the Swift method is modified from the Objective-C method as follows: Swiftメソッドの名前は、Objective-Cメソッドから以下のように修正されます:
The selector piece for the completion handler is removed. 完了ハンドラのセレクタ部分は、取り除かれます。
If the selector starts with get
, that prefix is removed and leading initialisms are converted to lowercase.
セレクタがget
で始まるならば、その接頭辞は取り除かれます、そして先導している頭文字それらは小文字に変換されます。
If the selector ends with Asynchronously
, that suffix is removed.
セレクタがAsynchronously
で終わるならば、その接尾辞は取り除かれます。
If the method calls its completion handler with a nullable parameter, the asynchronous version in Swift is marked with the @discardable
attribute.
メソッドがそれの完了ハンドラをヌル可能パラメータで呼び出すならば、Swiftでの非同期版は、@discardable
属性で印されます。
id
type to a specific Swift type.
Objective-C id
のインスタンスをSwift型にキャストします。