比方說,我定義斯威夫特一個泛型類,類似以下內容:在Objective-C使用泛型雨燕類
class MyArray<T> {
func addObject(object: T) {
// do something... hopefully
}
}
(我知道有一個稍微更好地落實陣列,這是僅僅是一個例子)
在斯威夫特我現在可以使用這個類很容易:
let a = MyArray<String>()
a.addObject("abc")
With Xcode 7, we now have generics in Objective-C,所以我會認爲我合作ULD使用這個類在Objective-C:
MyArray<NSString*> *a = [[MyArray<NSString*> alloc] init];
[a addObject:@"abc"];
然而,MYARRAY從未添加到我的Project-Swift.h
文件。即使我將其更改爲從NSObject繼承,它仍然不會出現在我的Swift.h文件中。
有什麼辦法來創建一個通用斯威夫特類,然後在Objective-C使用它呢?
更新:如果我嘗試從NSObject的繼承與@objc註釋:
@objc(MyArray)
class MyArray<T>: NSObject {
func addObject(object: T) {
// do something... hopefully
}
}
我得到以下編譯器錯誤:
Generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C.
這是否意味着有沒有辦法在Objective-C中使用通用的Swift類?
如何之一直接參考類?
你用@objc註釋了你的類嗎? –
@MrBeardsley我只是試過了,它給了一個有趣的編譯器錯誤(見上文)。 – Senseful