ios - 在 iOS 中为我​​自己的框架添加 "THIS has been renamed to THAT"

标签 ios swift xcode

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

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

struct Foo {    
  static let `default` = Foo()    
}

现在我将名称从 default 更改为 shared :

struct Foo {    
  static let shared = Foo()    
}

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

'NSLayoutAttribute' has been renamed to 'NSLayoutConstraint.Attribute'

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

当我在 A.framework 中进行一些名称更改函数声明更改 并将其推出到使用它的应用程序。是否有已知的方法来实现相同的目标?

最佳答案

您可以使用 @available 实现相同的行为属性。

struct Foo {

    @available(*, unavailable, renamed: "shared")
    static let defaults = Foo()

    static let shared = Foo()
}

它将为您提供如下所示的确切行为:

Replace dialog


注意: 您也可以对函数执行相同的操作,唯一的问题是您必须具有相同数量的参数。

struct Foo {

    @available(*, unavailable, renamed: "sharedFun(fName:lName:)")
    static func defaultFun(first: String, last: String) {}

    static func sharedFun(fName: String, lName: String) {}
}

Replace dialog - Function

关于ios - 在 iOS 中为我​​自己的框架添加 "THIS has been renamed to THAT",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59610627/

相关文章:

ios - CouchDB Kitura 执行 View

ios - 多个 NSManagedObjectContexts 问题

ios - UITableView 创建空白单元格而不是来自 JSON 的任何值

javascript - 如何在 iOS 上删除 Ionic Webview 顶部的空间?

ios - 为什么我用闭包初始化属性时可以使用 self?

ios - 当从显示搜索结果的另一个 View 返回时,如何将 UISearchBar 设为 "reset"?

ios - 包括 OpenGLES/ES2/gl.h 在为 Mac 编译时不起作用

swift - 命令 'swift build' - 无限建筑

ios - 在核心数据中使用类和点表示法访问是否会获得可变集?

ios - 正确存档带有扩展的 iOS 应用程序