2

我知道 Objective-C 没有命名空间,我肯定看到需要在库和框架中为类名添加前缀。但是在我自己的应用程序中为类名添加前缀的目的是什么?

4

1 回答 1

3

前缀减少了碰撞的可能性。在 iOS 程序中,这不太可能,因为您知道您正在加载的大部分内容。但是,Apple 可以将一些类添加到您直接或间接加载的框架中,那么您将遇到问题。

它发生的方式是当发生冲突时运行时将只加载一个实现。因此,如果您要求一个新实例,您可能会收到另一个开发人员实现的实例 (=CATASTROPHE)。

在 OS X 上,您有更多的机会动态加载。确实会发生冲突,而且遇到它们并不难——尤其是在处理插件时。所以这是一个很好的预防措施,特别是如果您的程序将或可能针对 OS X。

我认为前缀最好(最安全且易于迁移),并且在 OS X 和 iOS 中这样做很重要。即使出于可重用性和库开发的目的,这也是一个好主意。我们目前建议使用 3 个字符,但 3 个字符前缀可能会导致冲突。而且,如果您将其他库合并到您的程序中,那么您将有可能不得不重命名您的一堆类——如果该库使用与您相同的名称。这些天来,我倾向于使用双前缀,例如"ORG" + "Library""ORG" + "App"

同样,为您通过 objc 类别添加的任何方法名称添加前缀也是一个好主意。

于 2013-09-09T14:21:56.920 回答