使print()

时间:2016-05-11 05:54:11

标签: xcode swift compiler-warnings

我创建了一个自定义Logger,用于记录调试,发布等不同模式的值,但我希望每当我使用默认的print()时,Xcode都会抛出错误,解释用户使用自定义记录器。

我提到this但是想在那里抛出错误,而不是添加构建阶段。

任何想法?

1 个答案:

答案 0 :(得分:2)

您可以隐藏模块中的内置print并将其标记为“不可用”:

// swift 3:
@available(*, unavailable, message: "use Logger instead!")
internal func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
    Swift.print(items, separator: separator, terminator: terminator)
}

// swift 2:
@available(*, unavailable, message="use Logger instead!")
internal func print(items: Any..., separator: String = " ", terminator: String = "\n") {
    Swift.print(items, separator: separator, terminator: terminator)
}

结果如下:

Xcode errors

(还有另一个print<Target>(..., to output: inout Target)的例子我不想隐藏,我想没有人会不小心使用该功能。)

如图所示,在紧急情况下,您仍然可以使用限定名称Swift.print来引用实际功能。

请注意,这只会影响您自己的模块。您无法强制模块外的用户不使用print