【HarmonyOS NEXT】FAQ之ArkTS语言(ArkTS-2)

1、pthread创建的线程中如何读取rawfile

可在线程安全函数中读取:

  1. UI主线程中获取并保存资源文件对象。

  2. 创建线程安全函数。

  3. 在非UI主线程中调用线程安全函数。

  4. 在线程安全函数中,读取rawfile下的文件资源。

2、C/C++的三方开源库如何迁移到系统下运行

当前SDK只支持Cmake构建,同时对于依赖GN构建的场景提供了迁移指导

3、synchronized在java中可以修饰方法,从而简单地实现函数的同步调用。在系统ets开发中,如何简单实现该功能

支持AsyncLock形式的同步机制,将需要同步的代码块放到异步代码块中。

4、ArkTS类的方法是否支持重载

当前ArkTS支持TS中的重载,即多个重载签名+实现签名+函数体的形式。函数签名只用在编译期进行类型检查,不保留到运行时。

5、以libstd为例,C++的标准库放在哪里了,有没有打到hap包中

libc++shared.so被打包到应用目录下了,每个应用都有一份独立的libc++shared.so (/data/storage/el1/bundle/libs/${arch})。

6、如何开启AOT编译模式

AOT(Ahead Of Time)即预先编译,在程序运行前,预先编译成高性能机器码,让程序在首次运行就能通过执行高性能机器码获得性能收益。

7、AOT编译模式的产物及ap、an、ai文件是什么

AOT编译模式的产物是可以直接执行的机器码。

ap文件:即ark profiler文件,是在方舟AOT编译器中,记录预先profiling运行时类型等信息的文件。

an、ai文件是字节码结合ap文件生成的机器码文件,an是arkcompiler native的缩写,ai是arkcompiler image的缩写。

8、.ets文件和.ts文件的区别及如何互相调用文件中定义的方法

ArkTS基于兼容了TS语法,继承了TS的所有特性,当前,ArkTS在TS的基础上主要扩展了声明式UI能力,让开发者能够以更简洁、更自然的方式开发高性能应用。推荐用ArKTS开发UI相关内容,TS可以用来开发业务逻辑相关内容。

ts文件不支持调用ets文件中定义的方法。

ets调用ts文件中定义的方法,可以使用ES6中import引入及export导出的语法,将ts文件中的方法进行export导出,在ets文件中import引入该方法进行调用。

9、ArkTS中globalThis无法使用该如何替换

ArkTS不支持动态更改对象的布局,因此不支持全局作用域和globalThis。

10、如何访问类的静态变量和方法

在ArkTS中,静态变量和方法是属于类自身的,无法通过this访问,因为this是指向类的实例化对象。如果要在类中访问静态变量和静态方法,需要使用类名访问。

11、如何合并两个对象

出于性能考虑,目前ArkTS限制了ES6的Object.assign()方法的使用。若需要在ets文件中扩展对象属性或合并两个对象时,可以自行实现assign方法。

12、ArkTS是否可以开发AST数据结构或者接口

AST属于编译器编译过程中间数据结构,该数据本身不稳定,可能会随着语言或者编译器的演进发生变化,暂无计划开放给开发者。

13、系统使用了ArkTS作为开发语言,那这些代码的在底层的解释运行的环境是自研的还是用的开源的,比如v8、jscore?另外系统也适配了React Native引擎,是不是也是复用的这个运行环境
  • 系统ArkTS语言运行在自研的方舟编译运行时,运行的是应用包中经过方舟编译工具链编译ArkTS/TS/JS源码后生成的字节码。

  • 系统适配的React Native引擎目前仍是运行JS源码,运行在系统提供的V8引擎。

14、ArkTS里的数据类型转换方法有哪些?和TS是一致的吗

ArkTS支持TS语义的as类型转换,不支持使用<>运算符进行类型转换。当前as类型转换只用在编译时,无法通过as在运行时进行类型转换。

ArkTS支持内置的类型转换函数,例如Number(), String(), Boolean()等。

更多详情查看:文档中心

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值