一、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ā)