比方说,我定义斯威夫特一个泛型类,类似以下内容:在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