重复的协议定义警告,但我需要此协议的倍数

Squ*_*tch 5 objective-c

注意:这与此问题类似,但不一样.我承诺.

我有一系列的表视图,它们调用一个模态视图来排序表的内容.为此,我在一个表视图控制器的头文件中设置了一个简单的协议,它工作得很好.然后我将此协议复制到我的其他表视图控制器并得到此警告:

忽略'ModalViewDelegate'的重复协议定义

现在我意识到这只是一个警告,但我不想每次编译都看不到它.为了摆脱警告,我导入了最初定义协议的头文件.再一次,我并不完全满意.将头文件导入每个表视图似乎很草率,所以我可以在没有警告的情况下使用协议.

如果你已经读过这篇文章,我感谢你.我的问题是'为什么会这样?有没有更好的方法在仍然使用相同的协议时摆脱这个警告?

Jos*_*ell 7

在使用相同的协议时是否有更好的方法来消除此警告?

编译器需要知道协议才能引用它.有两种方法可以实现这一点:将声明协议的头部导入到您正在使用它的文件中,或者在这些文件中进行协议的前向声明:@protocol MyProtocol;.第二个实际上只在协议需要相互引用时才有用(避免循环导入); 如果一个类需要采用该协议,则需要查看协议中方法的声明,这意味着需要查看协议声明本身,即报头.

将头文件导入每个表视图似乎很草率,所以我可以在没有警告的情况下使用协议.

这不是马虎,这是事情的运作方式.听起来,将协议声明放入自己的标头中并将其导入到需要的地方可能是有意义的.