iphone - 如何解决objective-c中的命名空间冲突?

标签 iphone objective-c

Possible Duplicate:
What is the best way to solve an Objective-C namespace collision?

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

最佳答案

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

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

这背后有一个具体的原因:

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

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

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

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

关于iphone - 如何解决objective-c中的命名空间冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879883/

相关文章:

iphone - 如何在 UITableViewController 中混合 "Custom Section Header View(s)"和 "Regular Header(s)"?

iphone - 单元测试 xcode 4

iphone - 在查看另一个 TableView 后尝试查看 TableView 时,应用程序崩溃

objective-c - 使应用程序与以前的 iOS 版本兼容

iphone - 向 ScrollView 添加标签

应用程序商店中的 iPhone 分发应用程序。真正的名字

ios - iOS中如何管理数据库

ios - applicationDidEnterBackground 方法中的 backgroundTimeRemaining 值不正确

ios - UIButton Action 选择器

objective-c : Convert JSON array of dictionaries to NSDictionary