微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么在使用 Kotlin Multiplatform 生成的 iOS 框架中属性名称有一个下划线下划线?

我有一个 Kotlin 多平台项目,我正在从 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>
    ...
}

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。