Swift减少print函数的耗费

Swift减少print函数的耗费,第1张

概述尽管print声明不会在设备的console里打印,但它们甚至在Release版本和设备上也会执行,这些执行可能会带来一些耗费。 特别的,它的参数仍然被模拟求值。如果你的print调用只有一个参数,这里有一个变通方法。你可以通过定义自己的全局级别的print方法来重写Swift的print方法,并且使用@autoclosure修饰器推迟其参数求值,就像assert做的那样: func print(

尽管print声明不会在设备的console里打印,但它们甚至在Release版本和设备上也会执行,这些执行可能会带来一些耗费。

特别的,它的参数仍然被模拟求值。如果你的print调用只有一个参数,这里有一个变通方法。你可以通过定义自己的全局级别的print方法来重写Swift的print方法,并且使用@autoclosure修饰器推迟其参数求值,就像assert做的那样:

func print(_ item: @autoclosure () -> Any,separator: String = " ",terminator: String = "\n") { #if DEBUG Swift.print(item(),separator:separator,terminator: terminator) #endif }

当你调用print(myExpensiveFunction())时,这个定制print方法被调用。这意味着在闭包中包裹的myExpensiveFunction()方法不会被立即求值。

如果你只在Swift的DeBUG配置标志中定义了-DDEBUG,那么在Release配置下构建的app中,myExpensiveFunction()将永远不会被求值,因为item()不会被调用。

总结

以上是内存溢出为你收集整理的Swift减少print函数的耗费全部内容,希望文章能够帮你解决Swift减少print函数的耗费所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1062155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存