You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin导出Objective-C时类与协议的命名规则及查询渠道

Kotlin代码导出至Objective-C时的类/协议命名逻辑及查询途径

一、命名转换逻辑

Kotlin代码导出到Objective-C时,类和协议的名称是包名简化+模块名+原类型名的组合,用下划线分隔,核心规则如下:

  • 包名处理:将原Kotlin包名的层级转换为大写开头、下划线分隔的格式,比如kotlinx.serialization会变成Kotlinx_serialization
  • 加入模块名:拼接当前Kotlin/Native模块的名称(比如示例里的core,对应kotlinx.serialization的核心模块)
  • 拼接原类型名:保留原Kotlin类/接口的首字母大写名称,直接追加到后面
  • 整体用下划线连接,确保符合Objective-C的标识符命名规范(不允许点号,只能用字母、数字、下划线)

示例验证

原Kotlin代码:

package kotlinx.serialization.modules

public interface SerializersModuleCollector {...}

转换后的Objective-C协议名是Kotlinx_serialization_coreSerializersModuleCollector,拆解后:

  • 包名简化:kotlinx.serialization → Kotlinx_serialization
  • 模块名:core
  • 原类型名:SerializersModuleCollector
  • 组合后:Kotlinx_serialization_coreSerializersModuleCollector

其他相关类型如KSerializer、SerializationStrategy也遵循同样规则,分别转换为Kotlinx_serialization_coreKSerializer、Kotlinx_serialization_coreSerializationStrategy。

完整转换后的Objective-C协议示例:

public protocol Kotlinx_serialization_coreSerializersModuleCollector {

  func contextual(kClass: any KotlinKClass, provider: @escaping ([any Kotlinx_serialization_coreKSerializer]) -> any Kotlinx_serialization_coreKSerializer)

  func contextual(kClass: any KotlinKClass, serializer: any Kotlinx_serialization_coreKSerializer)

  func polymorphic(baseClass: any KotlinKClass, actualClass: any KotlinKClass, actualSerializer: any Kotlinx_serialization_coreKSerializer)

  @available(*, deprecated, message: "Deprecated in favor of function with more precise name: polymorphicDefaultDeserializer")
  func polymorphicDefault(baseClass: any KotlinKClass, defaultDeserializerProvider: @escaping (String?) -> (any Kotlinx_serialization_coreDeserializationStrategy)?)

  func polymorphicDefaultDeserializer(baseClass: any KotlinKClass, defaultDeserializerProvider: @escaping (String?) -> (any Kotlinx_serialization_coreDeserializationStrategy)?)

  func polymorphicDefaultSerializer(baseClass: any KotlinKClass, defaultSerializerProvider: @escaping (Any) -> (any Kotlinx_serialization_coreSerializationStrategy)?)
}

二、详细信息查询途径

  • 查看Kotlin官方文档中Kotlin/Native 与 Objective-C 交互的专门章节,里面明确了命名映射、类型转换等全套规则
  • 针对kotlinx.serialization这类跨平台库,可以查看其官方文档中关于Objective-C导出的说明部分
  • 也可以直接查阅Kotlin/Native源码中负责Objective-C导出的模块,了解命名转换的具体实现逻辑

内容的提问来源于stack exchange,提问作者GuilhE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:36:17