Objective-C對象收到消息之后,究竟會調(diào)用何種方法需要在運行期才能解析出來蛇更。也就是說我們可以在運行期間改變調(diào)用方法垂攘,即不需要源代碼,也不需要集成子類來覆寫方法就能改變這個類本身調(diào)功能赊舶。新功能將在本類調(diào)所有實例中生效睁搭,而不是僅限于覆寫了相關(guān)方法調(diào)那些子類實例。
類的方法列表會把選擇子的名稱映射到相關(guān)的方法實現(xiàn)之上笼平,使得“動態(tài)消息派發(fā)系統(tǒng)”能夠據(jù)此找到應(yīng)該調(diào)用的方法介袜。這些方法均以函數(shù)指針的形式來表示,這種指針叫做IMP出吹,其原型如下:
id (*IMP)(id,SEL,...)
屏幕快照 2017-05-08 下午4.16.10.png
1,在運行期遇伞,可以向類中新增或替換選擇子所對應(yīng)的方法實現(xiàn)
2,使用另一份實現(xiàn)來替換原有的方法實現(xiàn)捶牢,這道工序叫做“方法調(diào)配”鸠珠,開發(fā)者常用此技術(shù)向原有實現(xiàn)中添加新功能。
3秋麸,一般來說渐排,只有調(diào)試程序等時候才需要在運行期修改方法實現(xiàn),這種做法不宜濫用灸蟆,會造成難以調(diào)試查錯驯耻。