假设我有一个框架,A我通过A.framework在项目中添加文件动态地包含在许多项目中。
考虑框架代码中的一个场景A:
struct Foo {
static let `default` = Foo()
}
Run Code Online (Sandbox Code Playgroud)
现在我将名称从 更改default为shared:
struct Foo {
static let shared = Foo()
}
Run Code Online (Sandbox Code Playgroud)
现在,当我们更新Swift 版本时,如果某些语法发生变化,我们有时会收到类似的错误
“NSLayoutAttribute”已重命名为“NSLayoutConstraint.Attribute”
其中我们点击该错误内的修复按钮,名称会自动更改。
当我在内部进行一些名称更改或函数声明更改A.framework并将其推广到使用它的应用程序时,我想实现相同的目标。有没有已知的方法可以实现相同的目标?
您可以通过使用@available属性实现相同的行为。
struct Foo {
@available(*, unavailable, renamed: "shared")
static let defaults = Foo()
static let shared = Foo()
}
Run Code Online (Sandbox Code Playgroud)
它将为您提供如下所示的确切行为:
注意: 你也可以对函数做同样的事情,唯一的问题是你必须有相同数量的参数。
struct Foo {
@available(*, unavailable, renamed: "sharedFun(fName:lName:)")
static func defaultFun(first: String, last: String) {}
static func sharedFun(fName: String, lName: String) {}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |