Objective-C:如何检查协议对象是否是特殊类

Man*_*nni 4 protocols interface objective-c

这个Java代码有效:

public void executeCommand(ICommand cmd) { // ICommand is an Interface
 if (cmd.getClass().equals(LoginCommand.class)){

 }
}
Run Code Online (Sandbox Code Playgroud)

但是这个Objective-C-Code不起作用:

- (void)executeCommand: (id<Command>)cmd { // Command is a Protocol
 if ([cmd isKindOfClass:[LoginCommand class]]) {
  // WARNING: '-conformsToProtocol:' not found in protocol
 }
}
Run Code Online (Sandbox Code Playgroud)

kev*_*boh 15

声明协议时,告诉它继承NSObject协议,如下所示:

@protocol Command <NSObject>
...
@end
Run Code Online (Sandbox Code Playgroud)

参考在这里.NSObject是一个实现的基本协议-conformsToProtocol:.