如何给所有使用 native swift function/method 添加警告?
How to add warning to all uses of native swift function/method?
添加警告的标准方法是:
class someClass {
#warning("Your warning message")
//@available(*, unavailable)
//@available(*, deprecated, message: "your warning message")
//@available(*, deprecated, renamed: "new name")
//@available(swift, introduced: 5)
func someFuncWithWarning() {}
}
但是如果我需要向 swift 的本机函数添加警告怎么办?
假设我需要向 someString.hasSuffix("suffix")
方法添加警告“请勿使用此方法”
可以这样做吗?
我认为你做不到。
所以,我相信你只有两个选择
第一个:
protocol Warnings {
#warning("Your warning message")
func hasSuffix(_ suffix: String) -> Bool
}
extension String: Warnings {}
但在这种情况下,不会在您调用函数的地方放置警告。相反,它将放置在您使用 #warning
.
的位置
第二个:
如果你真的不想让任何人使用某些功能
extension String {
func hasSuffix(_ suffix: String) -> Bool {
fatalError("Do not use this method")
}
}
#warning
#error
和 @available
有用的原因不同:
#error
和 #warning
的工作方式相同
#error ("Your error message")
warning ("Your warning message")
并且还与 if
一起工作,只有当条件为真时才会触发
#if os(macOS)
#error("this is not supported on macOS.")
#endif
但更重要的是,您可以将 @available
用于已弃用或重命名的函数等。
@available(*, deprecated, message: "This function is deprecated") func parseData() { }
@available
选项
- 已弃用
- 重命名
- 不可用
- 介绍
添加警告的标准方法是:
class someClass {
#warning("Your warning message")
//@available(*, unavailable)
//@available(*, deprecated, message: "your warning message")
//@available(*, deprecated, renamed: "new name")
//@available(swift, introduced: 5)
func someFuncWithWarning() {}
}
但是如果我需要向 swift 的本机函数添加警告怎么办?
假设我需要向 someString.hasSuffix("suffix")
方法添加警告“请勿使用此方法”
可以这样做吗?
我认为你做不到。 所以,我相信你只有两个选择
第一个:
protocol Warnings {
#warning("Your warning message")
func hasSuffix(_ suffix: String) -> Bool
}
extension String: Warnings {}
但在这种情况下,不会在您调用函数的地方放置警告。相反,它将放置在您使用 #warning
.
第二个:
如果你真的不想让任何人使用某些功能
extension String {
func hasSuffix(_ suffix: String) -> Bool {
fatalError("Do not use this method")
}
}
#warning
#error
和 @available
有用的原因不同:
#error
和 #warning
的工作方式相同
#error ("Your error message")
warning ("Your warning message")
并且还与 if
一起工作,只有当条件为真时才会触发
#if os(macOS)
#error("this is not supported on macOS.")
#endif
但更重要的是,您可以将 @available
用于已弃用或重命名的函数等。
@available(*, deprecated, message: "This function is deprecated") func parseData() { }
@available
选项
- 已弃用
- 重命名
- 不可用
- 介绍