HarmonyOS 关于Native与ArkTS对象绑定功能,析构方法没有触发

Destructor日志没有打印,ts要使用什么特殊函数才能释放对象吗?咨询场景描述:对象绑定 的 调用如下:

assert(napi_wrap(env, jsThis, reinterpret_cast<void *>(obj), BaseDetector::Destructor, 
nullptr, // finalize_hint 
  &obj->m_detector_wrapper_) == napi_ok); 
 
Destructor的实现如下: 
void BaseDetector::Destructor(napi_env env, 
void* nativeObject, 
[[maybe_unused]] void* finalize_hint) 
{ 
  OH_LOG_INFO(LOG_APP, "BaseDetector::Destructor called"); 
  reinterpret_cast<BaseDetector *>(nativeObject)->~BaseDetector(); 
} 
 
ts代码如下,detector没有释放: 
getContext(this).resourceManager.getRawFileContent('mnn/cent_move_160.mnn', (_err, value) => { 
  let detector:CentDetector = new CentDetector(value.buffer as ArrayBuffer); 
});
HarmonyOS
2024-11-25 10:40:04
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

​对象绑定参考下这个:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/napi/use-napi-object-wrap.md

说明:文件名和模块名用自己的就可以,把相关的代码参考下即可。

ts要使用什么特殊函数才能释放对象?答复:ArkTS无法直接回收c对象,可以在ArkTS侧业务完成后,通过api给c侧信号,在c++侧释放对象。

对于异步任务,须看内部函数是否存在异步任务,无异步则不需要。

// 如有异步转同步需求,可使用std::promise。​

分享
微博
QQ
微信
回复
2024-11-25 17:39:53
相关问题
ArkTS的class有函数吗?
276浏览 • 1回复 待解决
Native侧释放ArkTS对象方法
483浏览 • 1回复 待解决
HarmonyOS Native 实例化 ArkTS 对象
137浏览 • 1回复 待解决
ArkTS对象绑定的C++对象如何回收?
917浏览 • 1回复 待解决
HarmonyOS 关于native aki库的功能咨询
101浏览 • 1回复 待解决
如何在Native侧释放ArkTS对象
2345浏览 • 1回复 待解决
Native如何调ArkTS方法
2207浏览 • 1回复 待解决
ArkTs怎么传递对象或者类给Native
2337浏览 • 1回复 待解决
如何在Native侧构建一个ArkTS对象
2127浏览 • 1回复 待解决
ArkTS层获取对象的所有方法
1564浏览 • 1回复 待解决
Native侧调用ArkTS的全局普通方法
913浏览 • 1回复 待解决
HarmonyOS 请问TabContent如何page绑定
615浏览 • 1回复 待解决
ArkTSNative侧如何进行map数据交互
2236浏览 • 1回复 待解决
ArkTSNative侧分别如何动态加载SO库
2461浏览 • 1回复 待解决