我为什么要在自己的课程前加上?

时间:2013-09-09 13:46:20

标签: objective-c cocoa

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

1 个答案:

答案 0 :(得分:3)

前缀可降低发生碰撞的可能性。在iOS程序中,这不太可能,因为您知道大多数正在加载的内容。但是,Apple可能会为您直接或间接加载的框架添加一些类,那么您就会遇到问题。

它发生的方式是运行时在发生冲突时只加载一个实现。因此,如果您要求新实例,则可能会返回其他开发人员实现的实例(= CATASTROPHE)。

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

我认为最好(最安全且易于迁移)前缀,并且在OS X和iOS中都很重要。即使是为了可重用性和库开发,这也是一个好主意。 3个字符是我们当前的推荐,但3个字符前缀可能会导致冲突。如果你将其他的库合并到你的程序中,那么你将有可能必须重命名一堆你的类 - 如果该库使用与你的相同的名称。这些天,我倾向于使用双前缀,例如“ORG” + “Library”“ORG” + “App “

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