为什么 属性 名称在使用 Kotlin Multiplatform 生成的 iOS 框架中有下划线(下划线)?

Why does property name have an underscore (underbar) in generated iOS Framework using Kotlin Multiplatform?

我有一个 Kotlin Multiplatform 项目,我在其中从 Kotlin 源代码生成一个 iOS 框架。

我的一个 Kotlin 接口有一个 属性 定义如下:

interface Presenter {
    val validValues: List<Int>
    ...
}

然而,在生成的iOS框架的.h文件中,生成的是末尾有一个下划线“_”(下划线):

@property (readonly) NSArray<XYZInt *> *validValues_ __attribute__((swift_name("validValues_")));

为什么要在 属性 名称的末尾添加下划线“_”(下划线)?

事实证明,在我的源代码中,我有另一个接口被用作数据源,它定义了相同的 属性 名称:

interface MyModelSpecificDataSource {
    val validValues: List<Int>
    ...
}

一旦我将定义更改为不同的名称,下划线“_”就不再添加到末尾。

基于此,鉴于任何 class 都可以实现任何接口,我的假设是这样做是为了将一个定义与另一个定义区分开来,以免它们发生冲突。来自 Kotlin 团队的好电话!