55

オプションのプロトコルメソッドが実装されているかどうかを確認する最良の方法を知っている人はいますか?

私はこれを試しました:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )

デリゲートは次のとおりです。

id<MyProtocol> delegate;

respondsToSelector:しかし、関数がプロトコルに見つからないというエラーが表示されます!

4

2 に答える 2

101

respondsToSelector:NSObjectプロトコルの一部です。含めることNSObjectMyProtocol問題が解決するはずです:

@protocol MyProtocol <NSObject>

@optional
-(void)optionalProtocolMethod:(id)anObject;

@end
于 2009-02-04T18:23:39.383 に答える
5

私がしているのは、次のレシピを適用することです。

if(self.delegate && [self.delegate respondsToSelector:@selector(closed)]){
    [self.delegate closed];
}

「closed」は呼び出したいメソッドです。

于 2015-05-10T07:01:33.537 に答える