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

时间:2010-11-17 14:55:03

标签: objective-c interface protocols

这个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
 }
}

1 个答案:

答案 0 :(得分:15)

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

@protocol Command <NSObject>
...
@end

参考是here。 NSObject是一个实现-conformsToProtocol:的基础协议。