關于runtime

一、runtime簡介

RunTime簡稱運行時。OC就是運行時機制,也就是在運行時候的一些機制,其中最主要的是消息機制。

對于C語言,函數的調用在編譯的時候會決定調用哪個函數。

對于OC的函數,屬于動態(tài)調用過程,在編譯的時候并不能決定真正調用哪個函數,只有在真正運行的時候才會根據函數的名稱找到對應的函數來調用。

事實證明:

在編譯階段,OC可以調用任何函數,即使這個函數并未實現,只要聲明過就不會報錯。

在編譯階段,C語言調用未實現的函數就會報錯。

二、runtime作用

1.發(fā)送消息

方法調用的本質,就是讓對象發(fā)送消息。

objc_msgSend,只有對象才能發(fā)送消息,因此以objc開頭.

使用消息機制前提,必須導入#import

消息機制簡單使用

5.字典轉模型

設計模型:字典轉模型的第一步

模型屬性,通常需要跟字典中的key一一對應

問題:一個一個的生成模型屬性,很慢?

需求:能不能自動根據一個字典,生成對應的屬性。

解決:提供一個分類,專門根據字典生成對應的屬性字符串。

KVC字典轉模型弊端:必須保證,模型中的屬性和字典中的key一一對應。

如果不一致,就會調用[

setValue:forUndefinedKey:]報key找不到的錯。

分析:模型中的屬性和字典的key不一一對應,系統(tǒng)就會調用setValue:forUndefinedKey:報錯。

解決:重寫對象的setValue:forUndefinedKey:,把系統(tǒng)的方法覆蓋, 就能繼續(xù)使用KVC,字典轉模型了。

- (void)setValue:(id)valueforUndefinedKey:(NSString *)key {

}

字典轉模型的方式二:Runtime

思路:利用運行時,遍歷模型中所有屬性,根據模型的屬性名,去字典中查找key,取出對應的值,給模型的屬性賦值。

步驟:提供一個NSObject分類,專門字典轉模型,以后所有模型都可以通過這個分類轉。



不太會這個用排版,大家見諒,只能傻傻的截圖了

我其實不知道發(fā)什么比較好,如果大家有什么想學的可以私發(fā)我,我盡量發(fā)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • OC最實用的runtime總結 前言 runtime的資料網上有很多了,部分有些晦澀難懂,我通過自己的學習方法總結...
    姚姚先生閱讀 1,066評論 0 0
  • 對于從事 iOS 開發(fā)人員來說,所有的人都會答出【runtime 是運行時】什么情況下用runtime?大部分人能...
    夢夜繁星閱讀 3,734評論 7 64
  • 一、runtime簡介 RunTime簡稱運行時。OC就是運行時機制,也就是在運行時候的一些機制,其中最主要的是消...
    孟豊Mike閱讀 265評論 0 0
  • 一、runtime簡介 RunTime簡稱運行時。OC就是運行時機制,也就是在運行時候的一些機制,其中最主要的是消...
    愛敲代碼的果果閱讀 636評論 1 3
  • 之前沒怎么注意Runtime,最近花了點時間學習了下Runtime。雖然網上的資料很多,但是自己總結一下也是蠻好的...
    shikaiming閱讀 2,982評論 19 91