预处理器宏在 SwiftUI 官方教程/视频中很常见,例如:
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
需要那些吗?编译器肯定可以看到
struct
不在内部使用并省略整个 struct
因为访问修饰符是隐式的 internal
对?我认为一切符合PreviewProvider
可以删除,但也许不是每个符合条件的对象都这样,但如果不使用它,为什么 Apple 决定包含预处理器宏?我试图在 Release模式下运行它并在派生数据文件夹中找到已编译的类,但我对此一无所知(.o 文件)。 任何人都可以确认我们是否真的需要在发布版本中包含宏以省略未使用的代码(ContentView_Previews 类型不会在代码中的任何地方使用,期待预览,但无论如何都不会在发布版本中使用)?
最佳答案
NOTE: To be extra clear, you DO NOT need to wrap your preview providers in
#if DEBUG
conditionals. They are removed from your production build.
我有点晚了,但我只需要记下这一点,因为网络上到处都是困惑,结果证明它很可笑。发行说明位于“ 已解决的问题”下,已解决问题的标题是“存档时未从构建的产品中正确删除PreviewProviders。(
51539802
)”。是的,现在一切都说得通了。
The still
The proof
Annnd Just in case you think they may have changed it later..... more proof
(我很彻底......也许太多了)
关于swift - SwiftUI 中的预览真的需要#if DEBUG 语句才能在发布版本中将其删除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485562/