Edw*_*hak 10 struct objective-c swift
我有一个Objective-C方法接受类型的参数,id
我想传递一个Swift结构.
ObjcClass.m
文件:
@implementation ObjcClass
+ (void)addListener:(id)listener {
// Do something with listener
}
Run Code Online (Sandbox Code Playgroud)
DemoStruct.swift
文件:
struct DemoStruct {
func registerAsListener() {
ObjcClass.addListener(self) // Can't find a way to do this
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的编译错误消息:
类型'DemoStruct'不符合协议'AnyObject'
所以我的问题是,如何让Objective-C方法接受Any
而不是AnyObject
有这样的东西?
jrt*_*ton 12
你不能这样做.
从Objective-C无法访问Swift结构.这在Apple的"使用Swift With Cocoa和Objective-C"一书中有所说明:
只要与Objective-C兼容,您就可以访问使用@objc属性标记的类或协议中的任何内容.这不包括仅限Swift的功能,例如此处列出的功能:
- 泛型
- 元组
- Swift中定义的枚举
- Swift中定义的结构
- Swift中定义的顶级函数
- Swift中定义的全局变量
- 在Swift中定义的Typealiases
- Swift风格的可变参数
- 嵌套类型
- 咖喱功能
摘录自:Apple Inc."将Swift与Cocoa和Objective-C结合使用."iBooks.https://itun.es/gb/1u3-0.l
Edw*_*hak 12
我找到的最好的东西是包装在Box类中
public class Box<T> {
let unbox: T
init(_ value: T) {
self.unbox = value
} }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6945 次 |
最近记录: |