Objective-c-protocols
Objective-Cプロトコル
Objective-Cでは、特定の状況で使用されると予想されるメソッドを宣言するプロトコルを定義できます。 プロトコルは、プロトコルに準拠するクラスに実装されます。
簡単な例は、ネットワークURL処理クラスです。ネットワークURLフェッチ操作が終了すると、呼び出しクラスを推定するprocessCompletedデリゲートメソッドなどのメソッドを持つプロトコルがあります。
プロトコルの構文を以下に示します。
キーワード @ required のメソッドは、プロトコルに準拠するクラスに実装する必要があり、 @ optional キーワードのメソッドは実装がオプションです。
プロトコルに準拠するクラスの構文は次のとおりです。
つまり、MyClassのインスタンスは、インターフェイスで特に宣言されたメソッドに応答するだけでなく、MyProtocolで必要なメソッドの実装も提供します。 クラスインターフェイスでプロトコルメソッドを再宣言する必要はありません-プロトコルの採用で十分です。
複数のプロトコルを採用するクラスが必要な場合は、それらをコンマ区切りリストとして指定できます。 プロトコルを実装する呼び出し元オブジェクトの参照を保持するデリゲートオブジェクトがあります。
例を以下に示します。
プログラムをコンパイルして実行すると、次の結果が得られます。
上記の例では、delgateメソッドがどのように呼び出され実行されるかを見てきました。 startActionで始まり、プロセスが完了すると、デリゲートメソッドprocessCompletedが呼び出され、操作が完了します。
iOSまたはMacアプリでは、デリゲートなしでプログラムを実装することはありません。 そのため、デリゲートの使用方法を理解することが重要です。 デリゲートオブジェクトは、メモリリークを避けるためにunsafe_unretainedプロパティタイプを使用する必要があります。