第15條: 用前綴避免命名空間沖突

Objective-C沒有其他語言那種內(nèi)置的命名空間 (namespace) 機制. 鑒于此, 我們在起名時要設(shè)法避免潛在的命名沖突, 否則很容易就重名了. 如果發(fā)生命名沖突 (naming clash), 那么應(yīng)用程序的鏈接過程就會出錯, 因為其中出現(xiàn)了重復(fù)符號:

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

錯誤原因在于, 應(yīng)用程序中的兩份代碼都各自實現(xiàn)了名為 EOCTheClass 的類, 這導(dǎo)致 EOCTheClass 所對應(yīng)的類符號和"元類"符號各定義了兩次

個人開發(fā)者添加的前綴必須為3個字母(2個字母的前綴為蘋果公司獨有)
給C實現(xiàn)函數(shù)添加前綴(因為C函數(shù)名會作為頂級符號,出現(xiàn)在符號表中)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Objective-C沒有其他語言那種內(nèi)置的命名空間 (namespace) 機制.在應(yīng)用開發(fā)時,所有的代碼和引用...
    KKLinJJ閱讀 595評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,768評論 0 9
  • 如果時間倒流,希望我們是陌生人. 沒有再見,再也不會見的遺憾。也沒有渴望,遙不可及的重逢!
    木英澤閱讀 132評論 0 1
  • 有人說:沒有到不了的遠(yuǎn)方。心之所向,夢之所牽,情之所動,徒步逐之。 時光不會倒流,曾經(jīng)的我們再也回不去了。兒時總是...
    小仲夏閱讀 371評論 0 2