如何在Swift中警告函数的调用者

5

我正在逐步重构一个大型的项目。一些函数需要被重命名,但我无法直接更改因为许多其他模块直接调用它。相反,在第一阶段发布中,我想让调用一个函数的人知道,请使用这个函数代替另一个函数。让我举个例子来说明:

func length() - > Int {
    //..... some logic
}

期望在下一版本中进行重构,以:

func count() - > Int {
    //..... same logic
}

第一阶段,我想保留length()count(),但是让其他开发人员知道不要使用现有的,即length()。因此,我尝试了以下内容:

func length() - > Int {
    #warning("Please use count() instead")
    //..... some logic
}

但警告是在代码内部抛出,而不是给调用者。那么,如何最好地让调用者知道错误的调用呢?

注意:这里的示例只是为了更好地理解问题而简化了形式。实际的实现范围和模块大小要广得多。

2个回答

6
你可以使用@available关键字来管理方法的可用性。
为了警告用户:
@available(*, deprecated, message: "Please use count() instead")
func length() - > Int { }

强制用户:

@available(*, unavailable, message: "Please use count() instead")
func length() - > Int { }

建议用户重命名函数:
@available(*, renamed: "count()")
func length() - > Int { }

如果需要的话,您甚至可以设置平台和弃用版本(即使没有消息):

@available(iOS, deprecated:11.2)
func length() - > Int { }

2
值得一提的是,@available(*, renamed: "count()") 选项也很有用,因为它在 Xcode 中提供了内联重命名功能。 - holex

4

使用available关键字

您可以以几种方式使用它,如果要向开发人员显示警告,则应使用deprecated,但是如果要强制使用,则应使用unavailable

@available(*, deprecated, message: "Please use count() instead")
func length() - > Int {
}

更多信息请访问HackingWithSwift


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接