Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 重复协议定义警告,但我需要此协议的倍数_Objective C - Fatal编程技术网

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

Objective c 重复协议定义警告,但我需要此协议的倍数,objective-c,Objective C,注意:这与类似,但不同。我保证 我有一系列的表视图,它们调用一个模态视图来对表的内容进行排序。为此,我在一个表视图控制器的头文件中设置了一个简单的协议,它非常有效。然后,我将此协议复制到我的其他表视图控制器,并收到以下警告: 忽略“ModalViewDeleteGate”的重复协议定义 现在我意识到这只是一个警告,但我不希望每次编译时都看到它。为了消除警告,我导入了最初定义协议的头文件。再一次,我并不完全满意。将头文件导入每个表视图似乎很草率,这样我就可以在没有警告的情况下使用协议 如果你读到这

注意:这与类似,但不同。我保证

我有一系列的表视图,它们调用一个模态视图来对表的内容进行排序。为此,我在一个表视图控制器的头文件中设置了一个简单的协议,它非常有效。然后,我将此协议复制到我的其他表视图控制器,并收到以下警告:

忽略“ModalViewDeleteGate”的重复协议定义

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

如果你读到这里,我感谢你。我的问题是‘为什么会发生这种情况?是否有更好的方法在仍然使用相同协议的情况下消除此警告?”

在仍然使用相同协议的情况下,是否有更好的方法消除此警告

编译器需要了解协议,以便您参考它。有两种方法可以实现这一点:将声明协议的头导入到使用它的文件中,或者在这些文件中对协议进行转发声明:
@protocol MyProtocol。第二种方法只有在协议需要相互引用时才有用(以避免循环导入);如果一个类需要采用协议,它需要查看协议中方法的声明,这意味着它需要查看协议声明本身,即头部

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


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

我发现了一个类似的警告,在类的头中定义了@protocol。将该协议分解为自己的.h并在其他地方导入它,将其修复。

如果没有代码,将很难做任何有用的事情。在自己的头中实现该协议,并在需要的地方包含它。谢谢!我完全忘了我可以为协议做一个标题。这就是我一直在寻找的解决方案。