在 iOS 中为我​​自己的框架添加“THIS 已重命名为 THAT”

use*_*095 2 xcode ios swift

假设我有一个框架,A我通过A.framework在项目中添加文件动态地包含在许多项目中。

考虑框架代码中的一个场景A

struct Foo {    
  static let `default` = Foo()    
}
Run Code Online (Sandbox Code Playgroud)

现在我将名称从 更改defaultshared

struct Foo {    
  static let shared = Foo()    
}
Run Code Online (Sandbox Code Playgroud)

现在,当我们更新Swift 版本时,如果某些语法发生变化,我们有时会收到类似的错误

“NSLayoutAttribute”已重命名为“NSLayoutConstraint.Attribute”

其中我们点击该错误内的修复按钮,名称会自动更改。

当我在内部进行一些名称更改函数声明更改A.framework并将其推广到使用它的应用程序时,我想实现相同的目标。有没有已知的方法可以实现相同的目标?

Mid*_* MP 7

您可以通过使用@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)

替换对话框 - 功能