私は非公式なプロトコルと実際のプロトコルに関するいくつかの基礎を学んでいます。私を混乱させるのは、ココアがNSObjectについて多くの非公式プロトコルを使用しているようだということです。それらの非公式プロトコルはメソッドを宣言するNSObjectのカテゴリですが、実際に実装しません。NSObjectで非公式プロトコルを使用する場合と、オプションの方法でプロトコルを使用する場合の違いは何ですか?
私が正しいと思う限り、彼らが非公式のプロトコル(つまり、メソッドの実装を提供しないNSObjectのカテゴリ)を利用する唯一の理由は、Xcodeにオートコンプリートヒントを与えることです。
NSObjectの非公式プロトコルであるNSNibLoading.hで定義されている-awakeFromNibメソッドの1つの例があります。ペン先ロードシステムは、オブジェクトがそのメソッドを実装しているかどうかを実行時にチェックします。そうであれば、それを呼び出します。
しかし、ここでは非公式プロトコルと呼ばれる機能はないと考えてみましょう。まったく同じ効果が得られる代替は、オプションのメソッド-awakeFromNibを宣言する実際の@protocol宣言でした。 NSObjectはそのプロトコルを採用するだけで、コンパイラは自動的にオートコンプリートを提供します。
誰もこの2つの戦略の大きな違いを指摘できますか?私は非公式なプロトコルのポイントを見ていないが、実際にそうしたいと思うだろう。
私は参照してください。非公式プロトコルは、オプションのプロトコルメソッドがない過去から来ています。今これは理にかなっています。 –
私は、非公式のプロトコルが遺産の産物であることを明確に述べるように答えを更新しました。 – PeyloW