OC中的方法查找機制

場景:類A繼承自類B,類B繼承自類C,我想調用類A的fun方法,但A未實現該方法,類B也未實現fun方法,但是他實現了forwardInvocation:方法處理了當fun被調用時的邏輯,類C實現了fun方法,但是是私有的(強調私有是為了說明本場景只有C實現了fun方法,因為繼承關系,若公有,那A和B也會有該方法的實現)。

當A類的實例接收到fun消息時,查找邏輯為:

1. 在A類中查找fun方法,未找到。

2. 檢查A類中是否實現了forwardInvocation:方法,未找到。

3. 繼續在B類中查找fun方法,未找到。

4. 檢查B類中是否實現了forwardInvocation:方法,找到了。

5. 在B類中執行forwardInvocation:方法中的邏輯(可以是自定義邏輯或繼續轉發消息)。

不再繼續往C類中查找了。

總結一下,查找方法的邏輯為:

在本類中查找方法,找到則執行,否則查找是否實現了forwardInvocation:方法,找到則執行;否則繼續在父類中執行上述邏輯。

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

推薦閱讀更多精彩內容