2

在苹果文档 中与类名不同,协议名没有全局可见性。他们生活在自己的命名空间中。

这是什么意思,因为文档没有详细说明。我已经尝试过,我已经制作了两个同名的协议,但它们位于不同的文件中,编译器显示警告重复协议。 当我import将两个协议都放在单个文件中时,第一个协议import隐藏了其他协议减速。所以第一个导入的协议方法有效。其他给出警告

那么这条线是什么意思呢?我无法正确理解它。

4

2 回答 2

2

在其他编程语言中,您可以在不同的目录或包中拥有相同的类名。

在 Objective C 中,类名是全局的,因此没有命名空间的概念。名称必须是唯一的。不能有两个 Employee 类。

但是对于协议,您可以在不同的文件中定义相同的协议,并且根据您导入的文件,您可以看到该协议。

如果你不导入那个头文件,你就不知道那个协议。- 这可能是文档中说“协议没有全局可见性”时的意思

同时,如果您对同一协议有两个定义,则只会尊重第一个定义。事实上,编译器会向你显示一个明确的警告。

于 2012-12-09T16:02:41.347 回答
1

您可以拥有多个具有相同名称的协议,但不能在同一个类中使用。前者将隐藏后者。

于 2012-12-09T09:09:16.513 回答