讲述一下runtime的概念,message send如果寻找不到相应的对象,会如何进行后续处理 ?

runtime是oc的运行时机制,其中最重要的是他的消息机制,


RunTime 运行机制 :运行时候的一些机制
>最重要的是消息机制
>方法调用的本质就是让对象发送消息 只有对象能够发送消息,所以使用objc_开头,就算是    类方法也是类对象在发送消息 :发送消息的过程是runtime库会根据isa指针找到对应的    类 在类和父类的方法列表中找 如果在最顶类(NSObject)中也没有找到的话,会报方    法找不到这个错 <oc 给了我们三个拯救的机会 
    (1)Method resolution :调用
        + (BOOL)resolveClassMethod:(SEL)sel 
        + (BOOL)resolveInstanceMethod:(SEL)sel     
     (2) Fast forwarding 
      (3) Normal forwarding
     >
>一些项目中能用的技术
    (1)使用runtime交换方法:系统类 的方法功能不够;1使用继承类,重写方法 2使用runtime交换方法 :使用分类,只有分类才能给系统的类添加方法,并且通过添加的这个方法来进行方法交换,交换步骤在分类的load 方法中调用, 通过class_getClassMethod 
  获取方法地址, 通过 method_exchangeImplementations 交换方法注意的是 在方法交换后如果你在实现自己的方法的时候,要记住系统的方法已经被我们换掉了,所以调用我们自己的方法就代表调用系统的方法
    (2)使用runtime动态添加方法:如果一个类方法非常多,加载类到内存的时候也比较消耗资源,可以使用runtime动态添加方法来解决 <经典面试题:有没有使用performSelector,其实主要想问你有没有动态添加过方法。> :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值