Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kotlin多平台中使用Swift协议默认实现_Swift_Kotlin_Kotlin Multiplatform_Xcframework - Fatal编程技术网

在Kotlin多平台中使用Swift协议默认实现

在Kotlin多平台中使用Swift协议默认实现,swift,kotlin,kotlin-multiplatform,xcframework,Swift,Kotlin,Kotlin Multiplatform,Xcframework,我尝试在Kotlin多平台XCFramework中使用Swift代码 我有一个协议,扩展了这个协议的默认实现 @objc protocol Greeting { var something: String { get } } extension Greeting { var something: String { return "Hello from Swift" } } 在Platform.kt我正在写 class Greetin

我尝试在Kotlin多平台XCFramework中使用Swift代码

我有一个协议,扩展了这个协议的默认实现

@objc protocol Greeting {
    var something: String { get }
}

extension Greeting {
    var something: String {
        return "Hello from Swift"
    }
}
在Platform.kt我正在写

class GreetingImpl: NSObject(), GreetingProtocol {

    override fun something(): String {
        return (this as GreetingProtocol).something() 
    }
}

actual class Platform actual constructor() {
    val object = GreetingImpl()
    val value = object.something() //Application builds but falls here
}

如何在Kotlin Multiplatform中使用Swift协议默认实现?

据我所知,存在两个主要问题:

  • 扩展缺少
    @objc
    注释。虽然这是Swift方面的限制,但这妨碍了Kotlin提供完全的互操作性(Kotlin/Native不支持与Swift的直接互操作性,仅通过Objective-C)
  • Objective-C不支持协议默认实现(请参阅相关StackOverflow问题)
  • 所以,我要说的是,在Kotlin多平台中没有使用Swift协议默认实现的选项