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;
使 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;