iphone - Objective-C 中的协议(protocol)命名空间

标签 iphone objective-c ios

在苹果documentation 与类名不同,协议(protocol)名不具有全局可见性。他们生活在自己的命名空间中。

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

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

最佳答案

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

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

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

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

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

关于iphone - Objective-C 中的协议(protocol)命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13786062/

相关文章:

Objective-C:将选择器作为参数传递然后调用它

iphone - 在iOS中转换系统时区中的任何时区日期

iphone - 多个自定义 UITableViewCells - 重用标识符且不重用单元格

ios - 如何将 UIView 链接到 UICollectionViewCell?

iphone - 将 NSTimeInterval 转换为国际通用的字符串的正确方法是什么?

iOS 解析内部 Json

ios - 如何在cocoapods中只更新podfile的一个lib?

ios - 如何在我的应用程序中使用 Safari 的输入文件选择器?

ios - [self addSubview] 和 [self.contentview addSubView] 中的服装 UITableViewCell 有什么区别?

iphone - iPhone在线多人游戏需要什么类型的网络编程?