初心者はCocoaプログラミング(特にiOS)でイントロスペクションを練習する方法を教えてください。言い換えれば、私の練習用コードの中でどのようなシナリオを作成すれば、 "isKindOfClass"のようなものを使用させるのでしょうか?ココアでイントロスペクションを練習するには?
この質問の抽象的な性質のおかげで謝罪します。私はちょうどこれより良い句をできませんでした。ココア(マック)とCocoa Touchの(iOS版)では
初心者はCocoaプログラミング(特にiOS)でイントロスペクションを練習する方法を教えてください。言い換えれば、私の練習用コードの中でどのようなシナリオを作成すれば、 "isKindOfClass"のようなものを使用させるのでしょうか?ココアでイントロスペクションを練習するには?
この質問の抽象的な性質のおかげで謝罪します。私はちょうどこれより良い句をできませんでした。ココア(マック)とCocoa Touchの(iOS版)では
は、それがisKindOfClass:
よりrespondsToSelector:
またはconformsToProtocol:
を使用することが一般的に良いでしょう。
isKindOfClass:
を使用するのが最も良い理由は、プロパティリストまたはJSONデータを読み込んでいて、そのオブジェクトのルートオブジェクト(または、パラノイドであれば他のオブジェクトそれは)です。あなたが例外をキャッチしようとしていると仮定して、アサーションでこれを行うかもしれません(ユーザがファイルを提供した場合、例外をアプリケーションに強制するよりもエラーを提示する方が良いでしょう)。
他の2つは一般に委任プロトコルで使用されます。デリゲートプロパティの設定では、新しいデリゲートがデリゲートプロトコルに準拠していると主張できます。最も一般的には、プロトコルのメソッドのいずれかがオプションの場合、デリゲートがメッセージを送信しようとする前に実際にそのメッセージに応答するかどうかを確認する必要があります。
これらのすべてのケースに当てはまるアプリケーションを意図的に作成する場合は、ドキュメントベースのCocoaアプリケーションをプラグインアーキテクチャで作成することをお勧めします。アプリケーション側でconformsToProtocol:
およびrespondsToSelector:
のチェックを使用して、プロトコルを使用してプラグインAPIを指定します。プロパティリスト形式でドキュメントを処理する単一のプラグインを実装し、isKindOfClass:
を使用して、読み込んだプロパティリストが期待どおりであることを確認します。