【问题标题】:How to use a swift class with a generic type in objective c如何在objective c中使用具有泛型类型的swift类
【发布时间】:2015-07-11 21:06:06
【问题描述】:

我有以下带有 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
        }
    }

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

let statistics = MathStatistics<Double>()

如何在 Objective C 中初始化同一个对象? 下面一行没有设置数字类型T。

MathStatistics *stats = [[MathStatistics alloc] init];

【问题讨论】:

    标签: objective-c swift generics


    【解决方案1】:

    你不能。如documentation中所列:

    您可以访问类或协议中的任何内容 标有@objc 属性,只要它兼容 目标-C。这不包括仅 Swift 的功能,例如列出的那些 这里:

    • 泛型
    • 元组
    • Swift 中定义的枚举
    • Swift 中定义的结构
    • Swift 中定义的顶级函数
    • 在 Swift 中定义的全局变量
    • Swift 中定义的类型别名
    • Swift 风格的可变参数
    • 嵌套类型
    • 柯里化函数

    您必须在课堂上摆脱泛型。然后就可以在Objective-C中使用了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多