objective-c - Objective-C 依赖项的弃用警告
问题描述
使 Swift var 向后兼容 Objective-C
我有一个转换为 Swift 的 Objective-C 类。我所有的测试都通过了,但我想通过添加弃用警告来进一步优化它,以通知用户将下游依赖项更新为 var ( Decimal
) 的 Swift 版本(如果可以的话)。他们是否可以取决于他们使用的类是 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;
推荐阅读
- angular - 从 DOM 中移除动态组件选择器
- c# - 如何在 Outlook 中以编程方式显示所有字段选项卡
- c# - 如何在一个 Visual Studio 解决方案中的 2 个内部 API 之间发出 API 请求?
- apache-kafka - 覆盖 Kafka Connect 中的属性
- c# - 如何以编程方式在列表中设置元素名称(c# 中的 xml 序列化)?
- oauth - gitlab的oauth配置无效,请帮帮我
- pyspark - 从 Delta 转换为 Parquet 后将 Parquet 数据集读入 H2OFrame 时列分隔符不匹配
- python - 从 Python 笔记本创建时,Azure luis 实体不保存子实体
- python - 如何将函数基础视图转换为基于两个模型的通用类
- sql - 如何在 Microsoft SQL Server 中“取消堆叠”SQL 中的数据