[解決済み] Objective-C Runtime: クラスがプロトコルに準拠しているかどうかを確認する最良の方法は?
2022-04-22 07:38:56
質問
クラス(インスタンスはない)があり、それがあるプロトコルに適合しているかどうかを知る必要があります。しかし、Classは何度もサブクラス化することができ、class_conformsToProtocol()はスーパークラスで宣言されたプロトコルを無視することができます。
class_getSuperclass()を使って、スーパークラスがnilになるまで、階層内のすべてのクラスを再帰的にチェックすることもできますね。しかし、それは深くネストされたクラス階層では非効率的かもしれませんし、多分それを行うためのより良い方法があるのではと思います。
つまり、NSObjectのメソッドconformsToProtocolをObjective-Cのランタイムメソッドで実装し、スーパークラスでプロトコルを検出するにはどうすればよいのでしょうか。
[myObject conformsToProtocol:@protocol(MyProtocol)];
もし私が再帰的にクラス階層を上がっていくという正しい道を歩んでいるのであれば、教えてください。
どのように解決するのですか?
[MyClass conformsToProtocol:@protocol(MyProtocol)];
は動作するはずです。
関連
-
[解決済み】Xcodeのビルド失敗 "アーキテクチャx86_64の未定義シンボル"
-
[解決済み] NSNumberをNSStringに変換する方法
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cで抽象クラスを作成する
-
[解決済み] NSTimerの使い方を教えてください。
-
[解決済み】Objective-Cのコードをユニットテストするのに最適な方法は何ですか?
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】NSDateで年/月/日を取得する。
-
[解決済み】isEqual:とハッシュをオーバーライドするためのベストプラクティス
-
[解決済み】なぜObjective-Cのファイルには.mという拡張子がついているのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] C言語:拡張子「.mm」は何の略ですか?
-
[解決済み] クラス 'test_coredataAppDelegate' の重複したインターフェイス宣言
-
[解決済み] カスタムメイドのフレームワークで「セレクタ 'Hello:'の既知のクラスメソッドがありません」というエラーが発生する。
-
[解決済み] objcの "pi "と "M_PI "の違いは何ですか?
-
[解決済み] NSDictionary または NSMutableDictionary にキーが含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] objective-c/cocoaで例外を投げる
-
[解決済み] ブロック内の変数をブロック外の変数に代入する
-
[解決済み】キーボードを簡単に解除する方法は?
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】タイトル変更時に不要なUIButtonのアニメーションを停止させる方法は?