如何给所有使用 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 选项

  • 已弃用
  • 重命名
  • 不可用
  • 介绍