runtime實際應用

2021-07-09 05:19:15 字數 980 閱讀 2287

摘要

前面的兩篇博文已經告訴大家怎麼去檢視runtime底層實現,但是這些還不夠,還必須知道怎麼去用!下文將通過案例講解,runtime的實際應用!

runtime例項

runtime : 執行時機制 

首先必須明白的: 

1.是什麼 

1> runtime是一套比較底層的純c語言api, 屬於1個c語言庫, 包含了很多底層的c語言api 

2> 平時編寫的oc**, 在程式執行過程中, 其實最終都是轉成了runtime的c語言**, runtime算是oc的幕後工作者 

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

oc : 

[[person alloc] init] 

上面的person物件建立時候, 

runtime : 

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

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

2.runtime用過麼?又該怎麼用?能用來做什麼? 

我們需要明白的是: 

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

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

1> 標頭檔案

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

必備常識 

1> ivar : 成員變數 

2> method : 成員方法

2> runtime相關實際應用

下面貼一段**,是在歸檔解檔的時候使用runtime機制的一段**,這樣可以不用給每乙個屬性賦值,

- (void)encodewithcoder:(nscoder *)encoder

free(ivars);}

iOS開發中Runtime的實際應用

runtime是objective c的乙個固有特性,及在編譯階段並不能確定真正呼叫的函式名,函式的呼叫在執行時才得到確認。所以我們可以看到,oc在編譯階段沒有報錯的情況下,會在執行過程中出現閃退和崩潰的錯誤,而c語言在編譯過程中就會報錯。ios的錯誤處理 編譯未出報錯,執行卻閃退 動態呼叫特性 c...

Qt widget 實際應用

首先寫乙個目錄吧,方便自己理清思路。一 qt 最特別之處 訊號與槽機制 二 qt widget 三 qt qml 一 qt 最特別之處 訊號與槽機制 訊號是什麼 訊號簡單來說呢就是乙個不用實現的方法宣告。訊號定義時使用的關鍵字 signals 與public private protected使用方...

wait notify 實際應用

1.需求 有三個執行緒 第乙個執行緒輸出 第二個執行緒輸出 第三個執行緒輸出 現在要讓這三個執行緒每一次輸出都按照先 在 最後 的形式輸出 public class demo catch interruptedexception e system.out.println start new thre...