我只是想避免警告(没有编译器抑制),但是不想在我的文件中添加一些包含。这是我的代码:
@protocol MyProto;
// ...
Protocol *p = @protocol(MyProto);
这是我得到的警告:
@protocol is using a forward protocol declaration of MyProto [-Wat-protocol]
答案 0 :(得分:1)
使用协议文字(@protocol
)需要在编译时链接到协议,这需要编译器查看协议的定义。
我不明白为什么你反对“在我的文件中添加一些包含”。包含在使用该东西的实现文件中定义某些内容的头文件是很正常的。应该没有缺点。
如果要在运行时从字符串中查找协议,可以执行类似NSProtocolFromString(@"MyProto")
的操作。