ObjectiveC语法在方法参数中指定协议名称

liv*_*m95 21 cocoa objective-c

将协议指定为方法中的参数的ObjectiveC语法是什么?

假设我有2个协议,MyProtocol和MyProtocolCB:

@protocol MyProtocolCB <NSObject>
- (void) func;
@end

@protocol MyProtocol <NSObject>
- (void) register:(MyProtocolCB*) cb;
@end
Run Code Online (Sandbox Code Playgroud)

我收到此语法错误: error: expected type-specifier before 'MyProtocolCB'

Vla*_*mir 51

尝试:

- (void) register:(NSObject<MyProtocol>*) cb;
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用更通用的`id <MyProtocol>`而不是`NSObject <MyProtocol>*`,特别是如果`MyProtocol`已经扩展了'NSObject`协议 (10认同)