美文网首页
objc_msgSend调用

objc_msgSend调用

作者: hhhhhhhhhh1655 | 来源:发表于2018-03-01 13:34 被阅读7次
    
    -(void)text1{
    //调用实例方法
        objc_msgSend(self, @selector(hhh));
    
    //调用类方法
        objc_msgSend([self class], @selector(hhh));
    }
    

    用text1方式 调用时有时会崩溃 ,可以修改一下配置

    4C4BFACDD58E27A19DABF4EE1F198605.jpg

    也可以用下边的方法

    1. 将objc_msgSend 转化为C语言的对象, 然后转化为函数指针,函数指针至少有两个隐式参数 方法的调用者和 方法名,返回值为void
    2. 函数指针传入参数调用
    -(void)text2{
    
    //实例方法
       ((void (*) (id, SEL)) (void *)objc_msgSend)((id)self, @selector(hhh));
    
    //类方法
       ((void (*)(id, SEL)) (void *)objc_msgSend)((id)[self class], @selector(hhh));
    }
    
    
     -(void)hhh{
        NSLog(@"实例方法方法");
        
    };
    +(void)hhh{
        NSLog(@"类方法");
    };
    

    相关文章

      网友评论

          本文标题:objc_msgSend调用

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