美文网首页
iOS RunTime

iOS RunTime

作者: 梦想驻唱 | 来源:发表于2017-10-31 23:41 被阅读9次

NSInvocation

本质上是把selector转化成一个对象,相对于performerselector,可以支持多参数,可以处理返回值。
NSInvocation用法

class中添加一个方法

利用block构造

    //2  用block实现setter方法
    id setblock = ^(id self,id value, id value2){
        // do something
    };
    
    //3. 将block的实现转化为IMP
    IMP imp = imp_implementationWithBlock(setblock);
    
    //4. 用name拼接出setter方法
    NSString *selString = [NSString stringWithFormat:@"setFood:andWater:"];
    
    //5. 将setter方法加入到class中
    BOOL result = class_addMethod(self, NSSelectorFromString(selString), imp, "v@:@@");

利用OC函数

字节输入函数名

class_addMethod([self class], sel, class_getMethodImplementation(self, @selector(startEngine:)), "s@:@");

利用C函数

Method, Sel 与 Imp

Method, Sel 与 Imp
有参调用 ((void()(id,SEL,NSString))imp)(a,selector,@"pcl");
无参调用 imp()

Block

Block解析

相关文章

网友评论

      本文标题:iOS RunTime

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