如何在目标c中使用泛型类的swift类

Mor*_*s78 8 generics objective-c swift

我有以下带有NumericType T的swift类.

@objc class MathStatistics<T: NumericType> : NSObject {
        var numbers = [T]()

        func sum() -> T? {
            if numbers.count == 0 {
                return nil
            }

            var sum = T(0)

            for value in numbers {
                sum = sum + value
            }
            return sum
        }
    }
Run Code Online (Sandbox Code Playgroud)

在swift中,初始化类对象如下:

let statistics = MathStatistics<Double>()
Run Code Online (Sandbox Code Playgroud)

如何在Objective C中初始化相同的对象?以下行未设置数字类型T.

MathStatistics *stats = [[MathStatistics alloc] init];
Run Code Online (Sandbox Code Playgroud)

And*_*huk 9

你不能.如文档中所列:

只要与Objective-C兼容,您就可以访问使用@objc属性标记的类或协议中的任何内容.这不包括仅限Swift的功能,例如此处列出的功能:

  • 泛型
  • 元组
  • Swift中定义的枚举
  • Swift中定义的结构
  • Swift中定义的顶级函数
  • Swift中定义的全局变量
  • 在Swift中定义的Typealiases
  • Swift风格的可变参数
  • 嵌套类型
  • 咖喱功能

你必须在课堂上摆脱泛型.然后你可以在Objective-C中使用它