私が定義したプロトコルに準拠する場合としない場合があるオブジェクト(UIViewController)があります。
オブジェクトがプロトコルに準拠しているかどうかを確認し、安全にメソッドを呼び出すことができることはわかっています。
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
ただし、XCodeは警告を表示します。
warning 'UIViewController' may not respond to '-protocolMethod'
この警告を防ぐ正しい方法は何ですか?クラスself.myViewController
としてキャストできないようですMyProtocol
。
id<MyProtocol> p = (id<MyProtocol>)self.myViewController;
この回答と@andysはどちらも正しいですが、彼の方が正しいです。