runtime


1.runtime是一套底層c語(yǔ)言的API(包含很多實(shí)用的c語(yǔ)言數(shù)據(jù)類型、c語(yǔ)言函數(shù))

我們平時(shí)寫的OC代碼,底層都是基于runtime實(shí)現(xiàn)的,最終都會(huì)轉(zhuǎn)成runtime代碼

文檔:搜索runtime砾医,<<Runtime Versions and Platforms>>

2.runtime有啥用

能動(dòng)態(tài)產(chǎn)生一個(gè)類、成員變量衣厘、方法

能動(dòng)態(tài)修改一個(gè)類如蚜、成員變量、方法

能動(dòng)態(tài)刪除一個(gè)類影暴、成員變量错邦、方法


3.<runtime/message.h>? 和消息相關(guān)的頭文件

選中項(xiàng)目 - Project - Build Settings - ENABLE_STRICT_OBJC_MSGSEND? 將其設(shè)置為 NO 即可

Person *p = [[Person alloc]init];

p.name = @"22";

objc_msgSend(p,@selector(setName:),@"xiaoming");

NSLog(@"%@",p.name);


4.<runtime/runtime.h>?

unsigned int count = 0;

//所有的成員變量數(shù)組

Ivar *ivars = class_copyIvarList([Person class], &count);

for (int i = 0; i < count; i++) {

Ivar ivar = ivars[i];

//獲取一個(gè)成員變量名

const char *name = ivar_getName(ivar);

//獲取成員變量類型

const char *type = ivar_getTypeEncoding(ivar);

}



Objective-C語(yǔ)言是一門動(dòng)態(tài)語(yǔ)言,它將很多靜態(tài)語(yǔ)言在編譯和鏈接時(shí)期做的事放到了運(yùn)行時(shí)來(lái)處理型宙。這種動(dòng)態(tài)語(yǔ)言的優(yōu)勢(shì)在于:我們寫代碼時(shí)能夠更具靈活性撬呢,如我們可以把消息轉(zhuǎn)發(fā)給我們想要的對(duì)象,或者隨意交換一個(gè)方法的實(shí)現(xiàn)等妆兑。

這種特性意味著Objective-C不僅需要一個(gè)編譯器魂拦,還需要一個(gè)運(yùn)行時(shí)系統(tǒng)來(lái)執(zhí)行編譯的代碼。對(duì)于Objective-C來(lái)說(shuō)搁嗓,這個(gè)運(yùn)行時(shí)系統(tǒng)就像

一個(gè)操作系統(tǒng)一樣:它讓所有的工作可以正常的運(yùn)行芯勘。這個(gè)運(yùn)行時(shí)系統(tǒng)即Objc Runtime。Objc

Runtime其實(shí)是一個(gè)Runtime庫(kù)腺逛,它基本上是用C和匯編寫的荷愕,這個(gè)庫(kù)使得C語(yǔ)言有了面向?qū)ο蟮哪芰Α?/p>

Runtime庫(kù)主要做下面幾件事:

封裝:在這個(gè)庫(kù)中,對(duì)象可以用C語(yǔ)言中的結(jié)構(gòu)體表示棍矛,而方法可以用C函數(shù)來(lái)實(shí)現(xiàn)安疗,另外再加上了一些額外的特性弦牡。這些結(jié)構(gòu)體和函數(shù)被runtime函數(shù)封裝后桦山,我們就可以在程序運(yùn)行時(shí)創(chuàng)建讼呢,檢查毕贼,修改類线得、對(duì)象和它們的方法了褒纲。

找出方法的最終執(zhí)行代碼:當(dāng)程序執(zhí)行[object doSomething]時(shí)路幸,會(huì)向消息接收者(object)發(fā)送一條消息(doSomething)糙及,runtime會(huì)根據(jù)消息接收者是否能響應(yīng)該消息而做出不同的反應(yīng)脐雪。這將在后面詳細(xì)介紹厌小。

Objective-C runtime目前有兩個(gè)版本:Modern runtime和Legacy runtime。Modern Runtime

覆蓋了64位的Mac OS X Apps战秋,還有 iOS Apps璧亚,Legacy Runtime 是早期用來(lái)給32位 Mac OS X Apps

用的,也就是可以不用管就是了脂信。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末癣蟋,一起剝皮案震驚了整個(gè)濱河市透硝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疯搅,老刑警劉巖濒生,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異幔欧,居然都是意外死亡罪治,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門礁蔗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)觉义,“玉大人,你說(shuō)我怎么就攤上這事浴井∩购В” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵滋饲,是天一觀的道長(zhǎng)厉碟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)屠缭,這世上最難降的妖魔是什么箍鼓? 我笑而不...
    開(kāi)封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮呵曹,結(jié)果婚禮上款咖,老公的妹妹穿的比我還像新娘。我一直安慰自己奄喂,他們只是感情好铐殃,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著跨新,像睡著了一般富腊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上域帐,一...
    開(kāi)封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天赘被,我揣著相機(jī)與錄音,去河邊找鬼肖揣。 笑死民假,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的龙优。 我是一名探鬼主播羊异,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了野舶?” 一聲冷哼從身側(cè)響起易迹,我...
    開(kāi)封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎平道,沒(méi)想到半個(gè)月后赴蝇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巢掺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劲蜻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陆淀。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖先嬉,靈堂內(nèi)的尸體忽然破棺而出轧苫,到底是詐尸還是另有隱情,我是刑警寧澤疫蔓,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布含懊,位于F島的核電站,受9級(jí)特大地震影響衅胀,放射性物質(zhì)發(fā)生泄漏岔乔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一滚躯、第九天 我趴在偏房一處隱蔽的房頂上張望雏门。 院中可真熱鬧,春花似錦掸掏、人聲如沸茁影。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)募闲。三九已至,卻和暖如春愿待,著一層夾襖步出監(jiān)牢的瞬間浩螺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工呼盆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留年扩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓访圃,卻偏偏與公主長(zhǎng)得像厨幻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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