使 Swift var 向后兼容 Objective-C
我有一个 Objective-C 类,已转换为 Swift。我所有的测试都通过了,但我想通过添加一个弃用警告来更新以通知用户将下游依赖项更新到 Swift 版本的 var 来进一步优化它(Decimal
)如果可以的话。他们是否可以取决于他们使用的类是否是 Objective-C 类(只能“看到”NSDecimalNumber
) 或 Swift 类。有没有办法做到这一点?这就是我到目前为止所得到的。
@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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)