respondsToSelector 和 method_exchangeImplementations 审核不过
respondsToSelector 和 method_exchangeImplementations 审核不过
赵大财 发表于9个月前
respondsToSelector 和 method_exchangeImplementations 审核不过
  • 发表于 9个月前
  • 阅读 167
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

1   用不用的话 你自己看

    NSLog(@"%d",[Test instancesRespondToSelector:@selector(objectFun)]);
    NSLog(@"%d",[Test instancesRespondToSelector:@selector(classFun)]);
    NSLog(@"%d",[Test respondsToSelector:@selector(objectFun)]);
    NSLog(@"%d",[Test respondsToSelector:@selector(classFun)]);
    
    
    Test *obj = [[Test alloc] init];
    NSLog(@"%d",[obj respondsToSelector:@selector(objectFun)]);
    NSLog(@"%d",[obj respondsToSelector:@selector(classFun)]);
    NSLog(@"%d",[obj.class instancesRespondToSelector:@selector(objectFun)]);
    NSLog(@"%d",[obj.class instancesRespondToSelector:@selector(classFun)]);

2:用不用的话 你自己看


+ (void)exchangeMethod:(Method)originalMethod swapMothod:(Method)swapMothod
{
    IMP originalImp = method_getImplementation(originalMethod);
    IMP swapImp = method_getImplementation(swapMothod);
    method_setImplementation(originalMethod, swapImp);
    method_setImplementation(swapMothod, originalImp);
}

3 :这个没找到替代的方法 但是可能有人不知道是干嘛的 送个DEMO

- (int) getSignalLevel
{
    void *libHandle = dlopen("/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony",RTLD_LAZY);//获取库句柄
    if (!libHandle) {
        NSLog(@"Unable to open library: %s\n", dlerror());
        return 1;
    }
    int (*CTGetSignalStrength)(); //定义一个与将要获取的函数匹配的函数指针
    CTGetSignalStrength = (int(*)())dlsym(libHandle,"CTGetSignalStrength"); //获取指定名称的函数
    
    if(CTGetSignalStrength == NULL)
        return -1;
    else{
        int level = CTGetSignalStrength();
        dlclose(libHandle); //切记关闭库
        return level;
    }  
}


 

 

共有 人打赏支持
粉丝 20
博文 157
码字总数 37461
×
赵大财
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: