1. 程式人生 > >面試問題 什麼時候會報unrecognized selector錯誤?iOS有哪些機制來避免走到這一步?

面試問題 什麼時候會報unrecognized selector錯誤?iOS有哪些機制來避免走到這一步?

1.物件未實現該方法。

2.物件已經被釋放。

當傳送訊息的時候,我們會根據類裡面的methodLists列表去查詢我們要動用的SEL,當查詢不到的時候,我們會一直沿著父類查詢,當最終查詢不到的時候我們會報unrecognized selector錯誤

當系統查詢不到方法的時候,會呼叫+(BOOL)resolveInstanceMethod:(SEL)sel動態解釋的方法來給我一次機會來新增,呼叫不到的方法。或者我們可以再次使用-(id)forwardingTargetForSelector:(SEL)aSelector重定向的方法來告訴系統,該呼叫什麼方法,一來保證不會崩潰。