什么时候会报unrecognized selector的异常?

2019-01-08  本文已影响0人  iWander

简单说就是当调用对象的某个方法时,该对象未实现此方法,就会出现这种情况。

其实面试的时候问这个面试官就是想了解OC消息转发机制

objc是动态语言,每个方法在运行时会被动态转为消息发送,即:objc_msgSend(receiver, selector)。

objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行,如果,在最顶层的父类中依然找不到相应的方法时,程序在运行时会挂掉并抛出异常unrecognized selector sent to XXX 。但是在这之前,objc的运行时会给出三次拯救程序崩溃的机会:

上一篇 下一篇

猜你喜欢

热点阅读