IOS runtime執行機制詳解(一)

2022-05-06 11:09:12 字數 798 閱讀 7721

oc執行機制是指,可以執行的時候動態呼叫函式。因為c語言必須在編譯的時候就決定呼叫哪個函式。

我們平時寫的oc**,它在執行的時候也是轉換成了runtime的方式執行的。任何方法呼叫本質:就是傳送乙個訊息。(用runtime傳送訊息,oc底層通過runtime實現)每乙個oc的方法,底層必然有乙個與之對應的runtime執行方法。也就是說任何方法呼叫,都是轉換為訊息機制。

面試題:說說ios 訊息機制方法呼叫的過程:

1.oc在向乙個物件傳送訊息時,runtime庫會根據物件的isa指標來找到這個物件對應的類,或者父類中查詢對應的方法。

2.註冊方法編號(用編號的好處就是可以快速的查詢)。

3.根據方法編號去查詢對應的方法。

4.找到最終實現函式的位址,根據位址去方法區去呼叫對應的函式。

那麼,乙個oc物件的isa指標指向什麼?有什麼作用?

每個物件的內部都有乙個isa指標,這個指標是指向他的真實型別。根據這個類的指標就能知道將來呼叫哪個類的方法。

總結:1.每乙個類本質上都是乙個類的例項。其中類定義了成員變數和成員方法的列表。物件通過isa指標指向所屬的類。

2.每乙個類本質上都是乙個物件。類其實是元類(meteclas)的例項。元類定義了類方法的列表。類通過類isa指標指向元類。

3.元類儲存了類方法的列表。當類方法被呼叫的時候,會先從本身查詢類方法的實現,如果沒有找到,元類會向其父類查詢該方法。需要注意的是,元類也是類,也是乙個物件。

4.元類通過其isa指標指向他的根元類。(root meteclass)

5.根元類的isa指標指向了他本身。這樣行程了乙個封閉的內迴圈。

session執行機制

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表 的結構 也可能就是使用 雜湊表 來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為sessionid,如果已包含乙個sessionid則說明...

try catch finally執行機制

finally的執行 如下的程式所示,注釋中是執行的順序 public class test public static string test finally public static string test1 finally其實是僅在return 語句執行前執行,如果return 乙個函式,那...

runtime執行機制

這篇文章主要介紹的是runtime是什麼以及怎麼用!希望對讀者有所幫助!第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了ru...