d***@lgmg.com.cn
d***@lgmg.com.cn
  • 发布:2025-06-29 21:45
  • 更新:2025-06-29 21:46
  • 阅读:19

【报Bug】Class方式写的uts插件导入到uniapp的iOS离线打包工程中,无法调用Class实例中的方法。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 15.5

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: iPhone15 pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: CLI

CLI版本号: 3.0.0-4060620250520001

示例代码:

uts插件iOS


export type CallA = {  
    onSuccess: (a: string) => void  
    onFail: (e: string) => void  
}  

export class LgTest {  

    private host : string = '';  
    private port : number = 0;  

    private callA : CallA | null = null  

    constructor(host: string, port: number) {  
        this.host = host  
        this.port = port  
    }  
    @UTSJS.keepAlive  
    public setCallA(call : CallA) : void {  
        this.callA = call  
    }  

    public mCallASuccess() : void {  
        if (this.callA !== null) {  
            this.callA!.onSuccess('调用了success')  
        }  
    }  

    public mCallAFail() : void {  
        if (this.callA !== null) {  
            this.callA!.onFail('调用了onFail')  
        }  
    }  

    public testA() : string {  
        return '232323testA23232323'  
    }  

}

uts使用代码

import { LgTest } from '@/uni_modules/lg-test'  

let lgTestIns: LgTest | null = null  
const initTest = () => {  
    lgTestIns = new LgTest('192.168.0.0', 8080)  
}  
const setCall = () => {  
    if (lgTestIns) {  

        const callA = {  
            onSuccess: (a: string) => {  
                console.log('lgTestIns onSuccess回调了', a)  
            },  
            onFail: (e: string) => {  
                console.log('lgTestIns onFail回调了', e)  
            }  
        }  
        lgTestIns.setCallA(callA)  
    }  
}  
const callSuccess = () => {  
    if (lgTestIns) {  
        lgTestIns!.mCallASuccess()  
    }  
}  
const callFail = () => {  
    if (lgTestIns) {  
        lgTestIns!.mCallAFail()  
    }  
}  

const callTestA = () => {  
    if (lgTestIns) {  
        console.log('callTestA', lgTestIns!.testA())  
    }  
}

操作步骤:

调用initTest(),然后再调用setCall(),再调用callSuccess/callFail

预期结果:

控制台打印 “lgTestIns onSuccess回调了”、“lgTestIns onFail回调了”

实际结果:

iOS离线应用会报错<Weex>[error]WXBridgeContext.mm:1323, jsLog: Error: method call failed: -[NSCFNumber length]: unrecognized selector sent to instance 0x84dd6f027dbe993a ERROR

bug描述:

Class方式写的uts插件导入到uniapp的iOS离线打包工程中,无法调用Class实例中的方法。相同代码android没问题,HBuilderX运行到iOS也没问题

2025-06-29 21:45 负责人:无 分享
已邀请:
d***@lgmg.com.cn

d***@lgmg.com.cn (作者)

离线包使用的是4.66版本

要回复问题请先登录注册