runtime OC類執行順序

2021-07-11 08:01:54 字數 1122 閱讀 4959

一、runtime如何實現?

oc這個語言盡可能的將一些決定從編譯器推遲到執行時,他會盡可能的動態處理事情,這意味著這個語言不僅需要乙個編譯器,還需要乙個執行時系統,使得這個語言得以執行。

runtime簡稱執行時。就是系統在執行的時候的一些機制,其中最主要的是訊息機制。對於c語言,函式的呼叫在編譯的時候會決定呼叫哪個函式( c語言的函式呼叫請看這裡 )。編譯完成之後直接順序執行,無任何二義性。oc的函式呼叫成為訊息傳送。屬於動態呼叫過程。在編譯的時候並不能決定真正呼叫哪個函式(事實證明,在編 譯階段,oc可以呼叫任何函式,即使這個函式並未實現,只要申明過就不會報錯。而c語言在編譯階段就會報錯)。只有在真正執行的時候才會根據函式的名稱找 到對應的函式來呼叫。

runloop?

一般來講,乙個執行緒一次只能執行乙個任務,執行完成後執行緒就會退出。runloop就是一種機制,讓執行緒能隨時處理事件但並不退出,

乙個run loop就是乙個事件處理迴圈,用來不停的監聽和處理輸入事件並將其分配到對應的目標上進行處理。相對於普通迴圈,nsrunloop是一種更加高明的訊息處理模式,他對訊息處理過程進行了更好的抽象和封裝,把訊息打包成input source或者是timer source。

其次,也是很重要的一點,使用runloop可以使你的執行緒在有工作的時候工作,沒有工作的時候休眠,這可以大大節省系統資源。

二、oc類怎麼執行?

1.當程式啟動時,就會載入專案中所有的類,而且載入後會呼叫每個類的+load方法,只會呼叫一次;

2.當第一次使用某個類時,就會呼叫當前類的+initialize方法;

3.先載入父類,再載入子類(先呼叫父類的+load方法,再呼叫子類的+load方法,最後呼叫分類的+load方法),先初始化父類,再初始化子類(先呼叫父類的+initialize方法,再呼叫子類的+initialize方法)。

4.注意:在初始化的時候,如果在分類中重寫了+initialize方法,則會覆蓋掉父類的。

5.重寫+initialize方法可以監聽類的使用情況。

首先從硬碟load程式**到記憶體。

其次作業系統找到程式入口開始執行。

再次在程式執行過程中進行記憶體的管理。主要需要四部分記憶體空間:堆區用來存放建立的物件;棧區用來存放區域性變數;資料區用來存放靜態變數和字串常量;**區用來存放程式**。

java類執行順序

如果父類有靜態成員賦值或者靜態初始化塊,執行靜態成員賦值和靜態初始化塊 如果類有靜態成員賦值或者靜態初始化塊,執行靜態成員賦值和靜態初始化塊 將類的成員賦予初值 原始型別的成員的值為規定值,例如int型為0,float型為0.0f,boolean型為false 物件型別的初始值為null 如果構造方...

java類執行順序

先執行父類的靜態變數和靜態 塊,如果有初值為其賦值,沒有就賦值預設初始值 執行當前類的靜態變數和靜態 塊,如果有初值為其賦值,沒有就賦值預設初始值 執行當前類成員的預設賦值,int 0,boolean false等 執行當前類的構造方法,顯示或者掩式呼叫父類的構造方法,如果構造方法 塊中有this,...

java 類執行順序

package com.accdays.keyword 類中 的執行順序 1.載入時 static 塊會執行一次,且以後不會再執行 2.塊 例項化屬性字段 相同執行級別,按照 順序執行 3.建構函式 如果有父類,先按照上面順序執行父類的 執行順序 1.先父類再子類 2.先 static 塊 只執行一...