我正在逐步重构一个大型iOS Swift
项目。有些函数必须重命名,我不能直接重命名,因为许多其他模块直接调用它。相反,在第一阶段的发布中,我想让函数的调用方知道,请使用此函数而不是此函数。让我举一个例子来解释,
func length() - > Int {
//..... some logic
}
期望在下一个版本中对其进行重构,
func count() - > Int {
//..... same logic
}
对于第一阶段,我希望保留length()
和count()
,但要提醒其他开发人员不要使用现有的,即length((。所以我尝试了
func length() - > Int {
#warning("Please use count() instead")
//..... some logic
}
但警告是在线路中发出的,而不是给呼叫者的。那么,让来电者知道错误来电的最佳方式是什么呢?
注意:这里的例子只是理解这个问题的最简单的形式。实际实现的范围和模块规模要大得多。
您可以使用@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 { }
使用available
关键字
您可以通过多种方式使用它,如果您想向开发人员显示警告,则应使用deprecated
,但如果您想强制使用unavailable
@available(*, deprecated, message: "Please use count() instead")
func length() - > Int {
}
更多信息请访问HackingWithSwift