2.4.8 ios 原生反射机制报错

这个问题在之前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的也会有问题

creator.d.ts下
export module reflection{

     /**

     * https://docs.cocos.com/creator/manual/zh/advanced-topics/java-reflection.html

     * call OBJC/Java static methods

     *

     * @param className

     * @param methodName
    */

    //函数重写 解决TS下至少需要传递三个参数报错

    export function callStaticMethod (className: string, methodName: string): any;

    /**

     * https://docs.cocos.com/creator/manual/zh/advanced-topics/java-reflection.html

     * call OBJC/Java static methods

     *

     * @param className

     * @param methodName

     * @param methodSignature

     * @param parameters

     */

    export function callStaticMethod (className: string, methodName: string, methodSignature: string, ...parameters:any): any;

}

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。