3

可能重复:
解决 Objective-C 命名空间冲突的最佳方法是什么?

我已经为 iphone 开发了一个第三方动态库,依赖于 Mobile Substrate。问题是如果某个APP有一个名为“Class1”的Obj-C类,而我的dylib也有一个名为“Class1”的类,无法保证运行时会使用哪个类。有什么解决方案可以保留类名“Class1”并解决命名空间问题吗?

4

1 回答 1

2

在 Objective-C 中不存在命名空间的概念,源文件只是一个接一个地导入,如果使用通用名称作为类名,这当然会导致名称冲突。

在 Objective-C 中解决冲突问题的一个好方法是采用前缀来区分你的类名和其他类名,这是 Apple 自己已经使用的技术,让我们想想数组类,它被称为 NSArray,为什么?

这背后有一个特定的原因:

  • N : 识别下一个
  • S : 识别步骤
  • 数组:标识数据结构的名称

NextStep是创建 Foundation 框架的公司的名称,也是 90 年代中期被 Apple 收购的公司。

例如,我为我在库中打包的类使用不同的前缀,我使用:AleArray我名字的前 3 个字符,后跟数据结构的名称,您可以选择自己的前缀并继续使用.. .

当然,使用简单前缀发生冲突的概率仍然高于使用命名空间(通常使用反向域名表示法),但在大多数情况下就足够了。

于 2012-10-14T08:38:06.540 回答