检查是否已实现可选的协议方法

时间:2009-02-04 17:41:20

标签: iphone objective-c delegates protocols

有没有人知道检查是否已实施可选协议方法的最佳方法。

我试过了:

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

代表是:

id<MyProtocol> delegate;

但是,我收到一条错误,指出协议中找不到函数respondsToSelector:

2 个答案:

答案 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;是我想要调用的方法。