1

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

我的Kotlin接口之一具有这样定义的属性:

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

但是,在生成的 iOS 框架的 .h 文件中,生成的最后带有下划线“_”(下划线):

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

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

4

1 回答 1

3

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

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

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

基于此,鉴于任何类都可以实现任何接口,我的假设是这样做是为了区分一个定义和另一个定义,这样它们就不会发生冲突。Kotlin 团队的好电话!

于 2021-02-12T07:55:59.127 回答