runtime 執行時機制

2021-07-09 11:35:57 字數 1599 閱讀 1581

runtime : 執行時機制

一、runtime是什麼

1> runtime是乙個全動態語言,是基於c語言的庫,裡面包含了很多底層的c語言函式。

2> 平時編寫的oc**, 在程式執行過程中, 其實最終都是轉成了runtime的c語言**, runtime算是oc方法的底層實現,換句話說oc的實現也就是runtime的底層呼叫。

下面來舉個例項,(在前面的文章中講到過了!通過編譯成c語言,我們可以看到底層檔案)

oc :

[[person alloc] init]

上面的person物件建立時候,

runtime :

objc_msgsend(objc_msgsend(「person」 , 「alloc」), 「init」)

而上面這部分只是明白了最基礎的原理,那麼runtime又有哪些更深的運用呢?

二、runtime能用來做什麼?

1> runtime是屬於oc的底層, 可以進行一些非常底層的操作(用oc是無法現實的, 不好實現可以通過runtime是實現)

2>在程式執行過程中, 動態建立乙個類,例如:kvo的底層實現。

在程式執行過程中, 動態地為某個類新增屬性\方法, 修改屬性值\方法。

遍歷乙個類的所有成員變數(屬性)\所有方法

3.相關的標頭檔案和函式

1> 標頭檔案

開啟標頭檔案,我們發現許多的方法,但是我們用的最多的是下面的函式,

相關函式

objc_msgsend : 給物件傳送訊息

class_copymethodlist : 遍歷某個類所有的方法

class_copyivarlist : 遍歷某個類所有的成員變數

class_…..

當然,在使用這些東西的時候,我們首先要明白一些東西,

必備常識

1> ivar : 成員變數

2> method : 成員方法

2> runtime相關實際應用

nscoding(歸檔和解檔, 利用runtime遍歷模型物件的所有屬性)

字典 –> 模型 (利用runtime遍歷模型物件的所有屬性, 根據屬性名從字典中取出對應的值, 設定到模型的屬性上)

kvo(利用runtime動態產生乙個類)

用於封裝框架(想怎麼改就怎麼改)

runtime 執行時機制

首先,第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?這個問題我就不跟大家繞彎子了,直接告訴大家,runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了runtime的c語言 r...

runtime 執行時機制

必備常識 1.ivar 成員變數 2.method 成員方法相關應用 1.nscoding 歸檔和解檔,利用runtime遍歷模型物件的所有屬性 2.字典 模型 利用runtime遍歷模型物件的所有屬性,根據屬性名從字典中取出對應的值,設定到模型的屬性上 3.kvo 利用runtime動態產生乙個類...

runtime執行時機制

1,說一下執行時機制 執行時機制 1 runtime,執行時機制,它是一套c語言庫 2 實際上我們編寫的所有oc 最終都是轉成了runtime庫的東西,比如類轉成了runtime庫裡面的結構體等資料型別,方法轉成了runtime庫裡面的c語言函式,平時調方法都是轉成了objc msgsend函式 所...