在Objective-C中使用通用Swift类

感性的

假设我在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类?

如何直接引用班级?

newacct

Swift泛型类型不能在Objective-C中使用。

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID136

这不包括仅Swift的功能,例如此处列出的功能:

  • 泛型
  • ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Objective-C中使用Swift类

在objective c 类中使用delegate 调用swift 方法

在Objective-C中使用Swift对象类

在Objective-C中使用Swift协议

使用Objective-C的Swift类使用Swift的类

无法从 Objective-C 通用框架引用 Swift 通用框架的类和方法

如何在框架的Objective-C文件中使用Swift类?

无法在Objective-C单元测试中使用Swift类

在Objective c中使用Swift类。发生未声明的标识符错误

如何在框架中使用Swift扩展Objective-C类?

我可以在Swift框架库中使用Objective-C类吗?

如何在 Objective-C 代码中使用导入的 Swift 协议和类?

如何在Swift中使用名称为Objective-C的类作为关键字

使用来自Objective C类的参数调用Swift函数

如何在 Objective-C 中使用 swift 协议实现?

如何在Swift中使用Objective-C枚举

在Objective-C框架中使用Swift闭包

如何在Objective-C中使用Swift结构

在Objective-C中使用Swift扩展方法

在Objective-C代码中使用Swift的缺点?

是否可以在 Objective-c 中使用 YouTubePlayer-Swift?

在Xcode Swift项目中使用Objective C框架

在Objective-C类中使用时,看不到调试区域中的Swift对象层次结构

在Objective-C中使用时,有时不会调用Swift类中声明的运算符重载“ <”

类消息的接收者“**”是前向声明错误。在 Objective-C 中使用 Swift 静态库

Objective-C类中的Swift协议

Swift 中的 Objective C 类方法调用

Swift-Objective-C加载类方法?

从Objective C中的Swift类继承