Objective-C 依赖项的弃用警告

Deprecation warning for Objective-C dependencies

使 Swift var 向后兼容 Objective-C

我有一个 Objective-C class 我已经转换为 Swift。我的所有测试都通过了,但我想通过添加弃用警告来进一步优化它 update 以通知用户将下游依赖项更新到 var (Decimal) 的 Swift 版本(如果可以的话)。他们是否可以取决于他们使用的 class 是 Objective-C class(只能 "see" NSDecimalNumber)还是 Swift class。有没有办法做到这一点?这就是我到目前为止所得到的。

  @available(swift, introduced: 5.0)
  public var mySwiftDecimal: Decimal?

  @available(*, deprecated, renamed: "mySwiftDecimal")
  public var myObjCDecimal: NSDecimalNumber? {
      get {
          return mySwiftDecimal as NSDecimalNumber?
      } set {
          mySwiftDecimal = newValue as Decimal?
      }
  }

您可以在 Swift 中将成员注释为已弃用:

@available(swift, deprecated: 5.0, renamed: "mySwiftDecimal")
@objc public var myObjCDecimal: NSDecimalNumber? {
    get {
        return mySwiftDecimal as NSDecimalNumber?
    } set {
        mySwiftDecimal = newValue as Decimal?
    }
}

然后从Swift使用它会给出警告:

let foo = Foo()
print(foo.myObjCDecimal)
// 'myObjCDecimal' is deprecated: renamed to 'mySwiftDecimal'

但从 Objective-C 使用它不会:

Foo *foo = [[Foo alloc] init];
NSDecimalNumber *dec = foo.myObjCDecimal;