1、runtime簡介
• RunTime簡稱運行時。OC就是運行時機制,也就是在運行時候的一些機制,其中最主要的是消息機制。
• 對於C語言,函數的調用在編譯的時候會決定調用哪一個函數。
• 對於OC的函數,屬於動態調用過程,在編譯的時候並不能決定真正調用哪一個函數,只有在真正運行的時候纔會根據函數的名稱找到對應的函數來調用。
• 事實證實:
◦ 在編譯階段,OC能夠調用任何函數,即便這個函數並未實現,只要聲明過就不會報錯。
◦ 在編譯階段,C語言調用未實現的函數就會報錯。
2、runtime做用
1.發送消息
• 方法調用的本質,就是讓對象發送消息。
• objc_msgSend,只有對象才能發送消息,所以以objc開頭.
• 使用消息機制前提,必須導入#import <objc/message.h>
• 消息機制簡單使用
2.交換方法
• 開發使用場景:系統自帶的方法功能不夠,給系統自帶的方法擴展一些功能,而且保持原有的功能。
• 方式一:繼承系統的類,重寫方法.
• 方式二:使用runtime,交換方法.
3.動態添加方法
• 開發使用場景:若是一個類方法很是多,加載類到內存的時候也比較耗費資源,須要給每一個方法生成映射表,能夠使用動態給某個類,添加方法解決。
• 經典面試題:有沒有使用performSelector,其實主要想問你有沒有動態添加過方法。
• 簡單使用
4.給分類添加屬性
• 原理:給一個類聲明屬性,其實本質就是給這個類添加關聯,並非直接把這個值的內存空間添加到類存空間。
5.字典轉模型
• 設計模型:字典轉模型的第一步
◦ 模型屬性,一般須要跟字典中的key一一對應
◦ 問題:一個一個的生成模型屬性,很慢?
◦ 需求:能不能自動根據一個字典,生成對應的屬性。
◦ 解決:提供一個分類,專門根據字典生成對應的屬性字符串。面試