假设我在Swift中定义了一个通用类,类似于以下内容:
class MyArray<T> {
func addObject(object: T) {
// do something... hopefully
}
}
(我知道有一个稍微更好的实现阵列的,但这仅仅是一个例子。)
在Swift中,我现在可以非常轻松地使用此类:
let a = MyArray<String>()
a.addObject("abc")
使用Xcode 7,我们现在在Objective-C中有了泛型,因此我假设可以在Objective-C中使用此类:
MyArray<NSString*> *a = [[MyArray<NSString*> alloc] init];
[a addObject:@"abc"];
但是,从未将MyArray添加到我的Project-Swift.h
文件中。即使我将其更改为继承自NSObject,它也仍然不会出现在我的Swift.h文件中。
有什么方法可以创建一个通用的Swift类,然后在Objective-C中使用它?
更新:如果我尝试从NSObject继承并使用@objc进行注释:
@objc(MyArray)
class MyArray<T>: NSObject {
func addObject(object: T) {
// do something... hopefully
}
}
我收到以下编译器错误:
“ @objc”类的泛型子类不能具有显式的“ @objc”属性,因为它们无法从Objective-C直接看到。
这是否意味着无法在Objective-C中使用通用Swift类?
如何直接引用班级?
Swift泛型类型不能在Objective-C中使用。
这不包括仅Swift的功能,例如此处列出的功能:
- 泛型
- ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句