栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

斯威夫特:print()vs println()vs NSLog()

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

斯威夫特:print()vs println()vs NSLog()

一些区别:

  1. print
    vs
    println

print
调试应用程序时,该功能在Xpre控制台中打印消息。

println
是Swift 2中已删除且不再使用的变体。如果看到正在使用的旧代码,则
println
可以安全地将其替换为
print

回到Swift
1.x,

print
没有在打印字符串的末尾添加换行符,而是添加了换行符
println
。但是,如今,
print
总是在字符串的末尾添加换行符,如果您不希望这样做,请提供
terminator
参数
""

  1. NSLog

    • NSLog
      更慢

    • NSLog
      在输出中添加时间戳和标识符,而
      print
      不会;

    • NSLog
      语句同时出现在设备的控制台和调试器的控制台中,而
      print
      仅出现在调试器的控制台中。

    • NSLog
      使用
      printf
      -style格式的字符串,例如

          NSLog("%0.4f", CGFloat.pi)

会产生:

2017-06-09 11:57:55.642328-0700 MyApp [28937:1751492] 3.1416

  1. 对于有效的iOS 10 / macOS 10.12,还有第三种选择,

    os_log
    即“统一日志记录”系统的一部分(请参阅WWDC 2016视频统一日志记录和活动跟踪)。

    • 您必须先导入,

      os.log
      然后才能使用
      os_log
      函数:

          import os.log
    • 像一样

      NSLog
      os_log
      也会将消息输出到Xpre调试控制台和设备控制台。

    • 现在,您可以控制控制台应用程序中可用的“子系统”和“类别”字段。例如:

          let log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "network")

      os_log(“url = %@”, log: log, url.absoluteString)

通过外部控制台应用程序观察该应用程序时,不仅可以将这些列添加到主视图,还可以基于这些列进行过滤。想要将调试消息与(a)其他子系统代表您的应用程序生成的调试消息区分开来时,这非常有用。或(b)来自其他类别或类型的消息。

* 您可以指定不同类型的日志信息,无论是`.info`,`.debug`,`.error`,`.fault`(或`.default`): os_log("web service did not respond", type: .error)

因此,如果使用外部控制台应用程序,则可以选择仅查看某些类别的消息(例如,如果在控制台的“操作”菜单上选择“包括调试消息”,则仅显示调试消息)。这些设置还决定了有关是否将内容记录到磁盘的许多细微问题。有关更多详细信息,请参阅WWDC视频。

* 使用时不能使用字符串插值`os_log`。例如,您不能执行以下操作: os_log("foo (url.absoluteString)")

您将必须执行以下操作:

 os_log("url = %@", url.absoluteString)* 出现上述限制的原因之一是支持数据隐私。默认情况下,原始数据类型(例如,数字)是公共的,而对象(例如,字符串)在默认情况下是私有的。在记录URL的上一个示例中,如果从设备本身调用了该应用程序,并且正在从Mac的Console应用程序观看,则将看到:

url = <私人>

如果要从外部设备查看它,则必须执行以下操作:

 os_log("url = %{public}@", url.absoluteString)* 注意,`NSLog`现在在幕后使用统一通知系统,但有以下警告:  * 您无法控制子系统,类别或日志类型;  * 它不支持隐私设置。

底线

print
足以完成简单的任务,但
NSLog
很有用,因为它包含了您的时间戳信息。

的功率

os_log
调试具有的Xpre以外的地方进行测试iOS应用程序,当进入鲜明的救济。例如,当测试后台iOS应用程序进程(例如后台获取)时,连接到Xpre调试器会更改应用程序生命周期。因此,您经常需要在物理设备上进行测试,从设备本身运行应用程序,而不是从Xpre的调试器启动应用程序。统一日志记录使您仍然可以
os_log
从macOS控制台应用程序观看iOS设备语句。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号