【发布时间】:2014-11-12 17:59:57
【问题描述】:
我对@987654322@ 进行子类化,以便拥有一个可供 Cocoa Bindings 访问的有序集合。我的班级或多或少是这样的:
public class OrderedCollection<Tk: Hashable, Tv> : NSObject {
var keys: Array<Tk> = []
var values: Dictionary<Tk,Tv> = [:]
override init() {
super.init()
}
// Subscript methods go here
override public var description: String {
var result = "{\n"
for i in 0..<self.count {
result += "[\(i)]: \(self.keys[i]) => \(self[i]!)\n"
}
result += "}"
return result
}
}
它无法编译。错误说:'@objc' getter for non-'@objc' property。
有没有办法让 getter 不是'@objc'?我不需要从 Objective-C 访问该属性...
【问题讨论】:
-
你不能。泛型类与 Objective-C 不兼容。
-
我了解泛型类与 ObjC 不兼容。尽管如此,文档中没有任何内容(至少我已经找到)说你不能用泛型子类化 ObjC 类以在 Swift 中使用,事实上它不会抱怨(并且会编译)直到我覆盖描述。
标签: macos cocoa swift foundation