编写高质量代码的52个有效方法

52个有效方法(15) - 使用前缀避免命名空间冲突

2018-09-03  本文已影响4人  SkyMing一C

Objective-C没有其他语言那种内置的命名空间(namespace)机制。

鉴于此,我们在起名时要设法避免潜在的命名冲突,否则很容易就重名了。

如果发生命名冲突(naming clash),那么应用程序的链接过程就会出错,因为其中出现了重复符号:

duplicate symbol _OBJC_METACLASS_$_EOCTheClass in:
      build/something.o
      build/something_else.o
duplicate symbol _OBJC_CLASS_$_EOCTheClass in:
      build/something.o
      build/something_else.o

错误原因在于:

解决方法就是:

要点
  1. 选择与你的公司、应用程序或二者皆有关联之名称作类名的前缀,并在所有代码中均使用这一前缀。

  2. 若自己所开发的程序库中用到了第三方库,则应为其中的名称加上前缀。

  3. 给C实现函数添加前缀(因为C函数名会作为顶级符号,出现在符号表中)。

  4. 需要注意的是:Apple宣称其保留使用所有“两字母前缀”的权利,所以你自己选用的前缀应该是三个字母或以上的。

上一篇下一篇

猜你喜欢

热点阅读