美文网首页
第15条: 用前缀避免命名空间冲突

第15条: 用前缀避免命名空间冲突

作者: spbreak | 来源:发表于2016-02-19 10:00 被阅读166次

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函数名会作为顶级符号,出现在符号表中)

相关文章

网友评论

      本文标题:第15条: 用前缀避免命名空间冲突

      本文链接:https://www.haomeiwen.com/subject/uxszhttx.html