未在JSContext中发布基于JSExport的类

问题描述

当我使用JSExport协议创建类时

@objc protocol Font_JSExports: JSExport {
    
    var name        : String { get }
}

class Font          : NSObject,Font_JSExports
{    
    var name        : String
    var atlas       : MTLTexture?

    init(name: String)
    {   
        super.init()
        atlas = loadTexture( name )
    }
    
    deinit {
        if let texture = atlas {
            texture.setPurgeableState(.empty)
            atlas = nil
        }
        print("freeing font",name)
    }
}

并通过getFont()函数将该类传递给javascript上下文

    class func getFont(_ name: String) -> Font
    {
        let list = getFonts()
        for f in list {
            if f.name == name {
                return f
            }
        }
        return list[0]
    }

并从javascript获取对该类的引用

class Test
{
    constructor()
    {
        this.font = System.getFont("Square")
    }
}

当我删除JSContext时,永远不会调用字体类的deinit析构函数。如何在JSContext被破坏时将对象引用传递给被释放的JavaScript?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...