[OC Runtime編程指南_翻譯]三、與運行時交互

[OC Runtime編程指南_翻譯]一钧椰、介紹
[OC Runtime編程指南_翻譯]二粹断、運行時版本和平臺
[OC Runtime編程指南_翻譯]三、與運行時交互
[OC Runtime編程指南_翻譯]四嫡霞、消息傳遞
[OC Runtime編程指南_翻譯]五瓶埋、動態(tài)方法解析
[OC Runtime編程指南_翻譯]六、消息轉(zhuǎn)發(fā)
[OC Runtime編程指南_翻譯]七诊沪、類型編碼
[OC Runtime編程指南_翻譯]八养筒、聲明屬性

注:pdf翻譯文檔百度云下載鏈接,密碼:zcs2

Objective-C程序在三個不同的層次與運行時系統(tǒng)交互:通過Objective-C源碼端姚;通過在基礎(chǔ)框架的NSObject類中定義的方法晕粪;通過直接調(diào)用運行時函數(shù)

Objective-C 源碼

在大多數(shù)情況下渐裸,運行時系統(tǒng)在后臺自動工作巫湘。您只需編寫和編譯Objective-C源代碼就可以使用它装悲。

當您編譯包含Objective-C類和方法的代碼時,編譯器將創(chuàng)建實現(xiàn)語言動態(tài)特性的數(shù)據(jù)結(jié)構(gòu)和函數(shù)調(diào)用尚氛。數(shù)據(jù)結(jié)構(gòu)捕獲類和類別定義以及協(xié)議聲明中的信息诀诊;它們包括在用 _Objective-C _編程語言 定義類協(xié)議時討論的類和協(xié)議對象,以及方法選擇器阅嘶、實例變量模板和從源代碼中提取的其他信息属瓣。主運行時函數(shù)是發(fā)送消息的函數(shù),如 消息傳遞中所述讯柔。它由源代碼消息表達式調(diào)用抡蛙。

NSObject 方法

Cocoa中的大多數(shù)對象都是NSObject類的子類,因此大多數(shù)對象都繼承它定義的方法魂迄。(一個值得注意的例外是NSProxy類溜畅;有關(guān)更多信息,請參閱 消息轉(zhuǎn)發(fā)极祸。)因此慈格,它的方法建立了每個實例和每個類對象固有的行為。然而遥金,在一些情況下浴捆,NSObject類只定義了一個模板,用于說明應(yīng)該如何完成某件事稿械;它本身并沒有提供所有必需的代碼选泻。

例如,NSObject類定義了一個description實例方法美莫,該方法返回一個描述類內(nèi)容的字符串页眯。這主要用于調(diào)試-GDB print object命令打印從該方法返回的字符串。這個方法的NSObject實現(xiàn)不知道類包含什么厢呵,所以它返回一個帶有對象名稱和地址的字符串窝撵。NSObject的子類可以實現(xiàn)此方法以返回更多詳細信息。例如襟铭,基礎(chǔ)類NSArray返回它包含的對象的描述列表碌奉。

有些NSObject方法只是查詢運行時系統(tǒng)的信息。這些方法允許對象執(zhí)行自省寒砖。此類方法的示例有類方法赐劣,它要求對象標識其類;isKindOfClass:和isMemberOfClass:哩都,用于測試對象在繼承層次結(jié)構(gòu)中的位置魁兼;respondsToSelector:,指示對象是否可以接受特定消息漠嵌;conformsToProtocol:咐汞,它指示對象是否聲明實現(xiàn)特定協(xié)議中定義的方法判哥;methodForSelector:,它提供方法實現(xiàn)的地址碉考。像這樣的方法給對象提供了自我反省的能力。

運行時函數(shù)

運行時系統(tǒng)是一個動態(tài)共享庫挺身,其公共接口由位于目錄/usr/include/objc中的頭文件中的一組函數(shù)和數(shù)據(jù)結(jié)構(gòu)組成侯谁。這些函數(shù)中的許多都允許您使用純C來復(fù)制編寫Objective-C代碼時編譯器所做的工作。其他的則是通過NSObject類的方法導(dǎo)出的功能的基礎(chǔ)章钾。這些函數(shù)使得開發(fā)運行時系統(tǒng)的其他接口和生成擴展開發(fā)環(huán)境的工具成為可能墙贱;在Objective-C中編程時不需要它們。但是贱傀,在編寫Objective-C程序時惨撇,一些運行時函數(shù)可能會有用。所有這些函數(shù)都記錄在_Objective-C _運行時參考中府寒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末魁衙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子株搔,更是在濱河造成了極大的恐慌剖淀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纤房,死亡現(xiàn)場離奇詭異纵隔,居然都是意外死亡,警方通過查閱死者的電腦和手機炮姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門捌刮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舒岸,你說我怎么就攤上這事绅作。” “怎么了蛾派?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵棚蓄,是天一觀的道長。 經(jīng)常有香客問我碍脏,道長梭依,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任典尾,我火速辦了婚禮役拴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钾埂。我一直安慰自己河闰,他們只是感情好科平,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姜性,像睡著了一般瞪慧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上部念,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天弃酌,我揣著相機與錄音,去河邊找鬼儡炼。 笑死妓湘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的乌询。 我是一名探鬼主播榜贴,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妹田!你這毒婦竟也來了唬党?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鬼佣,失蹤者是張志新(化名)和其女友劉穎初嘹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沮趣,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡屯烦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了房铭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驻龟。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缸匪,靈堂內(nèi)的尸體忽然破棺而出翁狐,到底是詐尸還是另有隱情,我是刑警寧澤凌蔬,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布露懒,位于F島的核電站,受9級特大地震影響砂心,放射性物質(zhì)發(fā)生泄漏懈词。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一辩诞、第九天 我趴在偏房一處隱蔽的房頂上張望坎弯。 院中可真熱鬧,春花似錦、人聲如沸抠忘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崎脉。三九已至拧咳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囚灼,已是汗流浹背骆膝。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留啦撮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓汪厨,卻偏偏與公主長得像赃春,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子劫乱,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355