协议转发声明的警告是什么?

时间:2016-03-28 07:29:35

标签: ios objective-c protocols

我只是想避免警告(没有编译器抑制),但是不想在我的文件中添加一些包含。这是我的代码:

@protocol MyProto;

// ...

Protocol *p = @protocol(MyProto);

这是我得到的警告:

@protocol is using a forward protocol declaration of MyProto [-Wat-protocol]

1 个答案:

答案 0 :(得分:1)

使用协议文字(@protocol)需要在编译时链接到协议,这需要编译器查看协议的定义。

我不明白为什么你反对“在我的文件中添加一些包含”。包含在使用该东西的实现文件中定义某些内容的头文件是很正常的。应该没有缺点。

如果要在运行时从字符串中查找协议,可以执行类似NSProtocolFromString(@"MyProto")的操作。