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/