私はMacRuby(とObjective-C)を使い慣れていません。いくつかのCocoaのドキュメントを読んで、私はプロトコルに準拠した代理人に言及している部分を続けています。これまでのところ、デリゲートについて話していることのプロトコルとして私のAppDelegate
を設定していますが、必要なプロトコルに準拠しているかどうかはわかりません。MacRuby:プロトコルに準拠する
プロトコルについて知りたいこと、およびアプリケーションでプロトコルに準拠させるにはどうすればよいですか?
私はMacRuby(とObjective-C)を使い慣れていません。いくつかのCocoaのドキュメントを読んで、私はプロトコルに準拠した代理人に言及している部分を続けています。これまでのところ、デリゲートについて話していることのプロトコルとして私のAppDelegate
を設定していますが、必要なプロトコルに準拠しているかどうかはわかりません。MacRuby:プロトコルに準拠する
プロトコルについて知りたいこと、およびアプリケーションでプロトコルに準拠させるにはどうすればよいですか?
[正式な] Objective-Cプロトコルが何であるかを理解する必要があります。これには、必須および/またはオプションのメソッドを定義することが含まれます。 AppleのObjective-Cのドキュメントを参照してください。プロトコルは多重継承の限定された形であり、それによって状態だけでなく動作だけが継承されます。他の言語は、interface
またはmix-in
と呼ばれることがあります。
プロトコルに準拠するということは、クラスがすべての必須メソッドを実装していることを意味します。オプションのメソッドはありません。
通常、プロトコルは代理人に使用されます。これは、クラスがその代理人から要求するAPIを形式化する手段です。特定のデリゲートプロトコルについては、そのAPIを理解する必要があります。特定のプロトコルに関するAppleのマニュアルを参照してください。
最後に、MacRubyクラスがどのプロトコルにも準拠していることを宣言する必要もありません。クラスインスタンスをクライアントオブジェクトデリゲートに直接割り当てることができます。プロトコルに準拠する必要がありますが、コンパイル時のチェックはありません。準拠しなかった場合は、実行時例外が発生する可能性があります。または何らかの奇妙な行動。か何か。
これは私の理解です。
「プロトコルに準拠している」のように聞こえるのは、必要な(またはオプションの)メソッドを定義することだけです。 – Andrew
(MacRubyに関する限り) – Andrew
これは正しいです。 –