美文网首页
runtime实战

runtime实战

作者: 李Mr | 来源:发表于2017-05-27 16:46 被阅读8次

当方法未实现时,通过runtime有三种方案进行补救:

比如当执行ChenPerson *person = [[ChenPerson alloc] init];

[person performSelector:@selector(runAction)];

当runAction方法不存在或者没有实现时,就会crash

通过以下措施可以进行补救。

1、方案一:+ (BOOL)resolveInstanceMethod:(SEL)sel  动态方法解析。通过重写该方法,动态添加方法到对象上。

2、当方案一中的方法返回NO时。则可以用方案二:

- (id)forwardingTargetForSelector:(SEL)aSelector;作用是替换方法的执行对象。把该方法交给别的对象执行,如果返回的对象也没有实现或存在改方法,则同样会crash

3、当前面两种方案都返回NO,和返回nil时,可以用方案三:完全转发

- (void)forwardInvocation:(NSInvocation*)anInvocation;作用是设置关联对象和执行方法。

所以需要重写:

- (NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector方法

为第一个方法提供NSMethodSignature对象。

forwardInvocation中传入的对象就是NSInvocation封装的NSMethodSignature对象。

相关文章

  • iOS runtime实战应用:成员变量和属性

    iOS runtime实战应用:成员变量和属性 iOS runtime实战应用:成员变量和属性

  • iOS Runtime 参考(一)

    参考方法链接runtime实战应用神经病院Objective-C Runtime入院 相关定义 类在runtime...

  • iOS Runtime学习笔记 (二) - 实战应用

    iOS runtime实战应用 iOS runtime 进行添加属性,并支持KVO监听 iOS 中category...

  • iOS-runtime相关

    本篇涵盖runtime的解析、应用等. 1.runtime快速入门和实战2.Runtime 10种用法(没有比这更...

  • iOS【运行时点击事件延迟】

    摘录:iOS高级开发runtime那点事实战(1)示例

  • runtime 实战

    runtime的确是很神奇的东西,可以做到很多我们本来做不到的事情,系统的UIWebview就有很多很有用的接口,...

  • Runtime实战

    Runtime简称运行时,就是iOS系统在运行的时候的一种机制,其中最主要的是消息机制,是一套底层的纯C语言的AP...

  • runtime实战

    当方法未实现时,通过runtime有三种方案进行补救: 比如当执行ChenPerson *person = [[C...

  • Runtime实战

    为了学习Runtime,我们应该需要从几个方面入手: 是什么? 为什么会出现? 怎么做? 分享 能干嘛? 是什么?...

  • runtime 实战

    runtime的确是很神奇的东西,可以做到很多我们本来做不到的事情,系统的UIWebview就有很多很有用的...

网友评论

      本文标题:runtime实战

      本文链接:https://www.haomeiwen.com/subject/swsqfxtx.html