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