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
错误原因在于, 应用程序中的两份代码都各自实现了名为 EOCTheClass 的类, 这导致 EOCTheClass 所对应的类符号和"元类"符号各定义了两次
个人开发者添加的前缀必须为3个字母(2个字母的前缀为苹果公司独有)
给C实现函数添加前缀(因为C函数名会作为顶级符号,出现在符号表中)
网友评论