这个Java代码有效:
public void executeCommand(ICommand cmd) { // ICommand is an Interface
if (cmd.getClass().equals(LoginCommand.class)){
}
}
但是这个Objective-C-Code不起作用:
- (void)executeCommand: (id<Command>)cmd { // Command is a Protocol
if ([cmd isKindOfClass:[LoginCommand class]]) {
// WARNING: '-conformsToProtocol:' not found in protocol
}
}
答案 0 :(得分:15)
声明协议时,请告诉它继承NSObject协议,如下所示:
@protocol Command <NSObject>
...
@end
参考是here。 NSObject是一个实现-conformsToProtocol:
的基础协议。