55

有谁知道检查是否已实现可选协议方法的最佳方法。

我试过这个:

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

其中委托是:

id<MyProtocol> delegate;

但是,我收到一条错误消息,指出respondsToSelector:在协议中找不到该功能!

4

2 回答 2

101

respondsToSelector:NSObject协议的一部分。包括在内NSObject应该MyProtocol可以解决您的问题:

@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];
}

“关闭”是我想要调用的方法。

于 2015-05-10T07:01:33.537 回答