2

ドキュメントclass_addProtocol非常に基本的なものであり、実際の使用方法は説明されていません。

私の解釈では、実行時にクラスにプロトコルを追加する場合は、プロトコルclass_addMethodから各メソッドを追加するために呼び出してから、を呼び出す必要がありますclass_addProtocol。私が本当に理解していないのは、電話をかける必要があるかどうか、そしてその理由class_addProtocolです。確かに、すべてのプロトコルメソッドを追加することで、クラスはすでにプロトコルに準拠しているので、class_addProtocol実際には何をしますか?

4

1 に答える 1

3

これにより、セレクター-conformsToProtocol:が機能します。状況によっては(複数のデリゲートがあり、特定の事柄に応答する必要があるが、他の事柄には応答しない場合があります)、要求している単一のメソッドだけでなく、オブジェクトがプロトコルに応答するかどうかを知ると便利です。

ほとんどの場合、これで-respondsToSelector:十分なので、ほとんどの場合、これは問題ではありませんが、便利なツールとしては優れています。

スーパークラスをチェックせず、問題を引き起こす可能性があるため、を使用class_conformsToProtocolすることはほとんどないことに注意してください。-conformsToProtocol

于 2012-08-05T00:39:46.983 に答える