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

Nic*_*ght 55 iphone delegates protocols objective-c

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

我试过这个:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] )
Run Code Online (Sandbox Code Playgroud)

代表是:

id<MyProtocol> delegate;
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误,说respondsToSelector:该协议中找不到该功能!

Wil*_*ris 101

respondsToSelector:NSObject协议的一部分.包括NSObjectMyProtocol应该解决您的问题:

@protocol MyProtocol <NSObject>

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

@end
Run Code Online (Sandbox Code Playgroud)

  • 除了你不应该留下你的代表,你为什么要打[代表发布]? (3认同)

Jav*_*ría 5

我正在应用以下食谱:

if(self.delegate && [self.delegate respondsToSelector:@selector(closed)]){
    [self.delegate closed];
}
Run Code Online (Sandbox Code Playgroud)

我想调用的方法是“ closed”。