【问题标题】:how can I transform type of variables in IMP如何在 IMP 中转换变量类型
【发布时间】:2016-11-30 03:05:58
【问题描述】:

当我尝试使用 IMP 时如何转换变量类型?

Person.m
-(void)priFunc:(NSString *)str{
    NSLog(@"%@",str);
}

我用IMP get priFunc,然后我想实现这个功能

main.m

...
IMP imp = method_getImplementation(method);

typedef void(*fn)(id,SEL,char *);
fn f = (fn)imp;
f(person,sel,"Jason");

问题是 Person.m 中变量 str 的类型是 NSString,但指针 fn 中变量的类型是 char* 。虽然编译成功了,但是程序会报(lldb)错误。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    您不能调用带有NSString * 参数的函数并将char * 传递给它并期望它能够工作。这两种类型不兼容。

    您需要将char * 参数转换为对象或重写方法以获取char *

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 2016-11-27
      • 1970-01-01
      相关资源
      最近更新 更多