-
Creator 版本:
-
目标平台: iOS原生
-
重现方式:在ts中调用原生反射运行oc代码

-
首个报错:
这个问题在之前2.2.2上是没有出现的,因为最近换了m1的Mac因此升级到了2.4.8。因此在这里调用的时候出现了这个问题。
我查看之后发现是因为这里是配的是android平台的代码,因为在反射代码的调用时需要填写methodSignature这个参数,而在iOS平台上是不需要的,我查阅了官方的文档同样是没有这个参数的
var result = jsb.reflection.callStaticMethod(className, methodName, arg1, arg2, .....);
目前我的解决办法是在给我的代码增加了一个参数,然后在ts调用的时候随便填写了一个字符串,然后就通过了。
还是希望在后续可以优化这个问题。
修改后代码:
+(BOOL)isTopHeadPhone:(NSString *)str {
// 根据安全区域判断
if (@available(iOS 11.0, *)) {
CGFloat height = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom;
return (height > 0) ? true : false ;
} else {
return false;
}
}
public isTopHeadPhone(): boolean {
let res = jsb.reflection.callStaticMethod("Utils", "isTopHeadPhone:", "test");
return res;
}
新的问题,因为methodSignature是string类型所以oc代码参数如果是number的也会有问题
