swift debugPrint vs print

10 浏览
0 Comments

swift debugPrint vs print

在运行时让应用程序崩溃并停止print()是否有方法?在Swift运行时中用一个preconditionFailure("STOP using print()")的实现来覆盖print()。基本上这是Pavlov团队训练的一部分:我希望人们只在调试版本中使用debugPrint而不是print来污染控制台。

UPD20180525:matt是对的:print的输出不会进入真实设备上的实时控制台,它只会出现在lldb控制台上。然而,NSLog的输出会进入设备的控制台,所以在非调试版本的运行时或编译时需要停止NSLog。

实际上需要的是:

#if DEBUG

#else

public func NSLog(_ format: String, _ args: CVarArg...)

{

}

#endif

(因为在发布版本中没有必要摆脱无害的print)

0
0 Comments

在Swift中,有两个常用的输出方法:`debugPrint`和`print`。`debugPrint`会输出更多的信息,包括类型和位置信息,而`print`只会输出值本身。然而,由于历史原因,很多开发者仍然使用`print`进行调试输出。

为了解决这个问题,可以使用Swift Lint工具,并创建一个自定义规则。下面是一个简单的自定义规则示例:

custom_rules:

disable_print:

included: ".*\\.swift"

name: "print usage"

regex: "((\\bprint)|(Swift\\.print))\\s*\\("

message: "Prefer debugPrint over print"

severity: error

这个规则会检查所有的Swift文件,如果发现有使用`print`或`Swift.print`的情况,就会报错,并提示使用`debugPrint`。需要注意的是,如果你有自己定义的名为`print`的函数或方法,这个规则可能会误报。类似地,你也可以使用类似的规则来检查`NSLog`的使用情况:

disable_nslog:

included: ".*\\.swift"

name: "NSLog verbotten"

regex: "((\\bNSLog))\\s*\\("

message: "NSLog prohibited"

severity: error

使用这个规则可以检查Swift文件中是否使用了`NSLog`,并报错提示禁止使用。

通过使用Swift Lint工具和自定义规则,我们可以更好地控制和规范代码中的输出方式,提高代码的可读性和可维护性。

0
0 Comments

在Swift中,我们经常使用print函数来输出调试信息。通常情况下,人们调用print时不使用命名空间,只是简单地写print。因此,如果我们声明一个与标准库中print函数具有相同签名的全局函数,它将有效地“覆盖”标准库中的print函数:

func print(_ items: Any..., separator: String = ", ", terminator: String = "\n") {

preconditionFailure("STOP using print()")

}

这样一来,当我们调用print函数时,实际上执行的是我们自定义的全局print函数,而不是标准库中的print函数。这可能会导致一些问题,因为我们可能依赖于标准库中print函数的特定行为或功能。

为了解决这个问题,我们可以使用debugPrint函数来代替print函数。与print函数不同,debugPrint函数是标准库中的函数,其行为与print函数类似,但它会以更详细和调试友好的方式输出调试信息。使用debugPrint函数可以避免我们自定义的全局print函数覆盖标准库中的print函数的问题。

此外,我们还可以使用命名空间来调用标准库中的print函数,以明确指定我们要调用的函数是标准库中的print函数而不是全局函数。例如,我们可以使用Swift.print来调用标准库中的print函数。

为了避免全局print函数覆盖标准库中的print函数的问题,我们可以使用debugPrint函数来输出调试信息,并使用命名空间来调用标准库中的print函数。这样可以确保我们调用的是我们期望的函数,避免潜在的bug。

0
0 Comments

Swift中有两个常用的打印函数:debugPrint和print。它们之间的区别在于debugPrint会在打印的对象周围添加额外的调试信息,而print则直接打印对象的内容。

然而,在某些情况下,可能会遇到无法使用print函数的情况。在上述代码中,print函数被标记为不可用,并提供了一个错误消息,指出团队已经同意不再使用print函数。因此,如果尝试使用print函数,将会在编译时产生错误。

这种限制print函数的做法可能是出于团队的代码规范或审查要求。为了避免在运行时发生错误,团队决定在编译时阻止对print函数的使用。

解决这个问题的方法是使用debugPrint函数代替print函数。debugPrint函数在打印对象时会添加额外的调试信息,可以方便地进行调试。因此,如果遇到无法使用print函数的情况,可以将其替换为debugPrint函数。

总之,Swift中的print和debugPrint函数之间存在一些区别。在某些情况下,可能会遇到无法使用print函数的情况,此时可以使用debugPrint函数代替。这种限制print函数的做法可能是出于团队的代码规范或审查要求。通过使用debugPrint函数,可以方便地进行调试并避免在运行时发生错误。

0