在 iOS 中为我自己的框架添加“THIS 已重命名为 THAT”
Posted
技术标签:
【中文标题】在 iOS 中为我自己的框架添加“THIS 已重命名为 THAT”【英文标题】:Add "THIS has been renamed to THAT" for my own framework in iOS 【发布时间】:2020-01-06 10:40:56 【问题描述】:假设我有一个框架A
,我通过在项目中添加A.framework
文件动态地将其包含在许多项目中。
考虑框架A
代码中的一个场景:
struct Foo
static let `default` = Foo()
现在我把名字从default
改成了shared
:
struct Foo
static let shared = Foo()
现在,随着我们更新 Swift 版本,如果某些语法发生变化,我们有时会收到类似
的错误“NSLayoutAttribute”已重命名为“NSLayoutConstraint.Attribute”
我们点击该错误内的修复按钮,名称会自动更改。
当我在A.framework
中进行一些名称更改 或函数声明更改 并将其推广到使用它的应用程序时,我想实现同样的效果。有没有已知的方法可以达到同样的效果?
【问题讨论】:
【参考方案1】:您可以使用@available 属性实现相同的行为。
struct Foo
@available(*, unavailable, renamed: "shared")
static let defaults = Foo()
static let shared = Foo()
它会给你一个准确的行为,如下所示:
注意: 你也可以对函数做同样的事情,只是你必须有相同数量的参数。
struct Foo
@available(*, unavailable, renamed: "sharedFun(fName:lName:)")
static func defaultFun(first: String, last: String)
static func sharedFun(fName: String, lName: String)
【讨论】:
谢谢。你知道如何为函数重命名做这件事吗? @user121095 你也可以对函数使用相同的属性(唯一的问题是,你必须有相同数量的输入参数):i.stack.imgur.com/R3hdT.png以上是关于在 iOS 中为我自己的框架添加“THIS 已重命名为 THAT”的主要内容,如果未能解决你的问题,请参考以下文章
我们如何让 NSTimer 在 iOS 中为我的音频播放器在后台运行