runtime?
1,支持nil發(fā)送消息
2,支持selector為空(就是方法為空,selector也能識別)
runtime selector方法識別
1,在當前class找
2,在父類class找,->直到nsobject類
3,動態(tài)方法解析,向當前類發(fā)送 resolveInstanceMethod: 信號矛纹,檢查是否動態(tài)向該類添加了方法
4,快速消息轉(zhuǎn)發(fā),檢查該類是否實現(xiàn)了 forwardingTargetForSelector: 方法臂聋,若實現(xiàn)了則調(diào)用這個方法。若該方法返回值對象非nil或非self或南,則向該返回對象重新發(fā)送消息孩等。
5,標準消息轉(zhuǎn)發(fā),runtime發(fā)送methodSignatureForSelector:消息獲取Selector對應的方法簽名。返回值非空則通過forwardInvocation:轉(zhuǎn)發(fā)消息采够,返回值為空則向當前對象發(fā)送doesNotRecognizeSelector:消息肄方,程序崩潰退出。