Xcode -ObjC

轉(zhuǎn)載自:http://blog.csdn.net/crash163/article/details/52088096

歡迎去原作者地址閱讀,為防文章丟失沮趣,copy至此

?在開發(fā) iOS 應(yīng)用時屯烦,可能遇見這樣的情況:你想實現(xiàn)的某種功能(比如崩潰收集),已經(jīng)有成熟的產(chǎn)品提供房铭,可行的方案就是集成這個使用了很久驻龟,且有專業(yè)人員維護,最重要的是“免費”的產(chǎn)品缸匪。一番折騰之后翁狐,運行時有可能出現(xiàn)"selector not recognized"錯誤,最后發(fā)現(xiàn)是少了如下的配置(Build Settings -> "-ObjC"):


?那么這個"–ObjC" 到底是個什么鬼豪嗽? 我們來扒一扒谴蔑。

? ? ? ?"-ObjC" 的使用場景

? ? ? ? 據(jù)坊間說:如果你集成了有 category 的靜態(tài)庫豌骏,有可能出現(xiàn)上述錯誤。原因就是:Technical Q&A QA1490??

? ? ? ??"An impedance mismatch between UNIX static libraries and the dynamic nature of Objective-C can cause category methods in static libraries to not be linked into an app, resulting in "selector not recognized" exceptions when the methods aren't found at runtime."

這段話的意思就是:鏈接器在處理包含Category方法的UNIX的靜態(tài)庫時隐锭,沒有將Category的方法鏈接到APP中窃躲,造成這個錯誤。具體的細節(jié)在本文的補充部分展開钦睡。

可以看出蒂窒,解決這個錯誤的方法就是:將Category的方法鏈接到APP中,這樣APP運行時荞怒,就能夠找到對應(yīng)的selector洒琢。而 –ObjC就可以完成這個任務(wù)。

"-ObjC"的作用是:將靜態(tài)庫中任何Objective-C代碼都鏈接到APP中褐桌。任何Objective-C代碼當然也包括Category的方法衰抑。可以看出荧嵌,使用-ObjC可能會鏈接很多靜態(tài)庫中未被使用的Objective-C代碼呛踊,極大的增加APP的代碼體積。

? ? ? "-ObjC" 的兄弟


和 "-ObjC"作用類似的有以上的五種方案啦撮√吠可以看出,從增加APP代碼體積來看赃春,偽符號方案增加得最少"Perform Single-Object Prelink"愉择、 "-force_load" 和 "–ObjC" 次之,"-all_load" 增加得最多织中。

在開發(fā)iOS SDK時,為了方便使用者手動集成站楚,最好是減少使用者需要配置的信息搏嗡,所以"偽符號"方案和 "Perform Single-Object Prelink"方案是推薦的采盒。另外,第三方SDK常常是閉源的尺栖,對于使用者來說,偽符號是透明的延赌,所以從簡便性角度看,推薦"Perform Single-Object Prelink"方案者蠕。

? ? ? ? "selector not recognized"錯誤的產(chǎn)生根源

iOS工程掐松,從源文件到生成最終的APP文件,通常要經(jīng)過如下步驟:


?源文件經(jīng)過編譯和優(yōu)化后抡句,會生成目標代碼。目標代碼中包括符號表,標示了此代碼中的全局符號和靜態(tài)符號究抓,還標示了導(dǎo)入符號等,鏈接器會根據(jù)符號表分析各個目標代碼之間的調(diào)用關(guān)系绑嘹,然后將使用到的代碼進行鏈接和重定位工腋,最后生成可執(zhí)行文件。

在編譯Objective-C源文件到目標文件時蟋恬,編譯器并不知道方法的對應(yīng)實現(xiàn)趁冈,只能在運行時才知道渗勘,所以編譯器只會為類生成鏈接符號,對類中的方法不會生成鏈接符號乔遮。由于Category方法并不對應(yīng)一個新類取刃,所以不會生成鏈接符號出刷,鏈接器也不會將Category方法合并到原始的類中馁龟,最終導(dǎo)致鏈接器忽略了Category方法屁柏,不會將其鏈接到可執(zhí)行文件中有送。

??????更多資訊請關(guān)注網(wǎng)易云捕微信公眾號,網(wǎng)易云捕官方微博~~

參考

1裸删、Technical Q&A QA1490

2涯塔、Objective-C categories in static library


轉(zhuǎn)載自:http://blog.csdn.net/crash163/article/details/52088096

歡迎去原作者地址閱讀清蚀,為防文章丟失枷邪,copy至此

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末东揣,一起剝皮案震驚了整個濱河市嘶卧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侦铜,老刑警劉巖钟鸵,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件携添,死亡現(xiàn)場離奇詭異,居然都是意外死亡缸托,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門俐镐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佩抹,“玉大人取董,你說我怎么就攤上這事∈嗬铮” “怎么了栏豺?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵豆胸,是天一觀的道長。 經(jīng)常有香客問我溉卓,道長,這世上最難降的妖魔是什么忿檩? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任燥透,我火速辦了婚禮辨图,結(jié)果婚禮上故河,老公的妹妹穿的比我還像新娘。我一直安慰自己理盆,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姨俩,像睡著了一般环葵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陨晶,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天先誉,我揣著相機與錄音褐耳,去河邊找鬼渴庆。 笑死铃芦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的襟雷。 我是一名探鬼主播刃滓,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耸弄!你這毒婦竟也來了咧虎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤计呈,失蹤者是張志新(化名)和其女友劉穎砰诵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捌显,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡茁彭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扶歪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片理肺。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡眠副,死狀恐怖霍弹,靈堂內(nèi)的尸體忽然破棺而出典格,到底是詐尸還是另有隱情挽霉,我是刑警寧澤蚁趁,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布钢属,位于F島的核電站生音,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏域醇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一贼邓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧统舀,春花似錦枢泰、人聲如沸衡蚂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至先较,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翘地,已是汗流浹背臭杰。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工磁奖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像重挑,于是被迫代替她去往敵國和親嗓化。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

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

  • 今天是21劲室,我還能說什么很洋? 不是昨天,不是明天涝焙,不是后天妖滔,除了今天座舍,哪天都不是。 From today on, m...
    媛媛陳閱讀 177評論 0 0
  • 我的MBIT測試結(jié)果類型為ENTP揩徊,根據(jù)此次理論學(xué)習(xí)以及結(jié)合自己經(jīng)歷和對自我認知的了解腰鬼,探討問題如下: 你現(xiàn)在做的...
    西濃閱讀 546評論 0 0
  • 11月14日 周二 晴 天氣預(yù)報說這兩天降溫嵌赠,可是也沒有感到有多冷,記得往年的這個時候都凍的...
    風(fēng)起的時候我想你閱讀 163評論 0 0