オプションのプロトコルメソッドが実装されているかどうかを確認するための最良の方法を知っている人はいますか。
私はこれを試しました:
if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )
デリゲートは次のとおりです。
id<MyProtocol> delegate;
ただし、プロトコルに関数respondsToSelector:
が見つからないというエラーが表示されます。
respondsToSelector:
はNSObject
プロトコルの一部です。 NSObject
にMyProtocol
を含めると、問題が解決するはずです。
@protocol MyProtocol <NSObject>
@optional
-(void)optionalProtocolMethod:(id)anObject;
@end
私がしていることは、次のレシピを適用することです。
if(self.delegate && [self.delegate respondsToSelector:@selector(closed)]){
[self.delegate closed];
}
ここで、「closed」は私が呼び出したかったメソッドです。