【问题标题】:Why does property name have an underscore (underbar) in generated iOS Framework using Kotlin Multiplatform?为什么使用 Kotlin Multiplatform 生成的 iOS 框架中的属性名称有下划线(下划线)?
【发布时间】:2021-02-12 07:55:59
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: swift kotlin ios-frameworks kotlin-multiplatform kotlin-multiplatform-mobile


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 2011-07-31
      • 2011-09-26
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      相关资源
      最近更新 更多