runtime消息轉發機制

消息轉發機制

方法調用的過程其實就是消息轉發

 

1:動態方法解析 (resolveInstanceMethod)

  不存在消息轉發,實際上是動態的添加方法實現

2:快速轉發(forwardingTargetForSelector)

  當前類沒有此方法的實現,需要找個其他類去處理這個方法

3:慢速轉發

完整的消息轉發過程,兩個過程,

(1)方法簽名(methodSignatureForSelector:),把當前方法相關信息保存下來

(2)消息轉發(forwardInvocation),通過NSInvocation拿到這個方法,找個中間處理者去處理這個方法(invokeWithTarget)

 

如果都沒找着,就實現doesNotRecognizeSelector這個方法,這樣可以防止程序奔潰,增加程序的健壯性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章