有没有人知道检查是否已实施可选协议方法的最佳方法。
我试过了:
if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )
代表是:
id<MyProtocol> delegate;
但是,我收到一条错误,指出协议中找不到函数respondsToSelector:
!
答案 0 :(得分:99)
respondsToSelector:
是NSObject
协议的一部分。在NSObject
中添加MyProtocol
可以解决您的问题:
@protocol MyProtocol <NSObject>
@optional
-(void)optionalProtocolMethod:(id)anObject;
@end
答案 1 :(得分:3)
我所做的是应用以下食谱:
if(self.delegate && [self.delegate respondsToSelector:@selector(closed)]){
[self.delegate closed];
}
关闭&#39;是我想要调用的方法。