【问题标题】:Where is Self._printChanges() defined and/or documented for SwiftUI?Self._printChanges() 为 SwiftUI 定义和/或记录在哪里?
【发布时间】:2021-12-19 20:53:15
【问题描述】:

我看过一些关于 iOS 15 新 Self._printChanges() 功能的文章或视频,但在任何地方都找不到任何文档。有谁知道苹果在哪里记录了这个新功能?如何使用它非常明显,但我想看看我们可以用它做些什么,并且了解更多关于它的信息会有所帮助。甚至 Xcode 的查找也没有产生任何结果。有人发现什么吗?

【问题讨论】:

  • 如果你知道 SwiftUI,你真的不需要Self._printChanges(),有很多方法可以获取值报告。那么为什么这对你很重要?我们可以从中获得Self._printChanges() 的什么好处?

标签: swift xcode swiftui ios15


【解决方案1】:

不幸的是,_printChanges() 是一个私有 API,这就是它没有被记录的原因。这么多视频和文章引用它的唯一原因是苹果工程师在 WWDC21 期间提到了它。他们是这样说的:

从技术上讲,这不是 API - 注意前导下划线 - 所以应该只用于调试。我的一句话专业提示是我害怕的文档的范围。

但是,当您 Option + 单击时,Xcode 显示摘要。

总结
当在这种类型的视图的主体调用中调用时,打印导致主体结果需要刷新的已更改动态属性的名称。与物理属性名称一样,“@self”用于标记视图值本身已更改,“@identity”用于标记视图的标识已更改(即与视图关联的持久数据已更改)被回收用于相同类型的新实例)。

【讨论】:

  • 我明白了,谢谢你告诉我。我只将它用于调试,但想将其推送到日志输出中,而不仅仅是控制台,但它的唯一用例似乎是输出到控制台。我希望如果我能看到文档和其他信息,我就能想出一些东西。我想我们现在只需要使用它就可以了。再次感谢!
  • @JustMe np!如果要将输出保存到某个日志,最好在属性上使用onChanged。另外,如果答案有帮助,您可以点击绿色复选标记接受吗?
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2019-08-07
  • 2018-03-27
  • 2010-10-11
相关资源
最近更新 更多