上游 · Kotlin/Native binary options
objcDisposeOnMain:Controls deinitialization of Swift/Objective-C objects. When false, deinitialization happens on a special GC thread instead of the main one.
全部配置 / KN-BINARY-OBJCDISPOSEONMAIN
Xbinary=objcDisposeOnMain · KN-BINARY-OBJCDISPOSEONMAIN · 编译器参数(Native)
默认值:未设置。BinaryOptions 未声明默认;未核对消费侧前不标开关。使用场合:场景可配。场景可配:有明确目标(性能、包体、安全、兼容)时再改。
用途。在主线程执行 ObjC 对象释放。示例取值:`objcDisposeOnMain=false`(在 GC 线程析构 ObjC 对象)。官方说明:Controls deinitialization of Swift/Objective-C objects. When false, deinitialization happens on a special GC thread instead of the main one.
影响。影响 Apple/ObjC/Swift 互操作或打包元数据;配错会导致导出/链接问题。
适用场景。Apple 目标互操作或打包;非 Apple 目标通常无关。
可写。true / false
定义依据:konan/BinaryOptions.kt 在仓库中打开
// 文件:build.gradle.kts(应用的 Kotlin 模块,例如 composeApp)
kotlin {
ohosArm64 { // 按实际 native target 调整
binaries.all {
freeCompilerArgs += "-Xbinary=objcDisposeOnMain=false" // 在 GC 线程析构 ObjC 对象
}
}
}
不写这个配置时,编译器会怎么处理?
此选项默认未设置(空列表 / 空映射 / null)。不设置时由其他逻辑决定行为或直接跳过。
BinaryOptions 未声明默认;未核对消费侧前不标开关。
以下摘抄原文中与本配置最相关的段落,便于速读;完整上下文请点原文。
objcDisposeOnMain:Controls deinitialization of Swift/Objective-C objects. When false, deinitialization happens on a special GC thread instead of the main one.