Xcode 在更改时为每个应用程序目标编译情节提要

Posted

技术标签:

【中文标题】Xcode 在更改时为每个应用程序目标编译情节提要【英文标题】:Xcode compiles the storyboard for each app target when changed 【发布时间】:2017-09-08 10:10:08 【问题描述】:

我们有一个大型 Xcode 项目,其中包含 9 个不同的应用目标。它们在品牌、API-url 和其他较小的差异方面有所不同。 它们都使用相同的文件/类/故事板,只有某些构建设置、bundleID、appGroups 等不同。将它们分开的代码中的逻辑只是相同文件中的 prepro-macros。

当我更改情节提要中的某些内容时,它会重新编译整个情节提要。由于它是一个相当大的故事板,因此需要一段时间。我的问题是它为 each 目标编译。因此,当我进行更改时,它会将整个故事板编译 九次 次,并且需要很长时间。既然是这些target之间共享的完全相同的storyboard,为什么不能编译一次,共享编译结果呢?

每次我在 Storyboard 中更改视觉效果,或者每次我在 Storyboard 中更改一些小的内容并尝试构建/运行目标到设备时,它都会在状态栏中显示:

Building "MyTargetOne":   | Compiling 1 of 1 Storyboard files
[...]
Building "MyTargetTwo":   | Compiling 1 of 1 Storyboard files
[...]
Building "MyTargetThree": | Compiling 1 of 1 Storyboard files
etc.

即使我尝试运行特定目标,并且该目标位于编译行的第一个位置,它仍会在认为应用已成功构建之前编译其余目标。

我怎样才能防止这种情况,并且只构建我正在运行的那个? 我知道 Editor->Automatically Refresh Views,但这并没有真正的帮助,除了它没有显示我在情节提要中所做的事情。它仍然会在我构建/运行时构建所有目标。

【问题讨论】:

【参考方案1】:

在不同的目标上使用相同的文件总是很痛苦。

如果您的应用部署目标是 ios8 及更高版本,您可以尝试使用情节提要创建动态框架(Cocoa Touch Framework)并将目标的二进制文件与它链接。

【讨论】:

以上是关于Xcode 在更改时为每个应用程序目标编译情节提要的主要内容,如果未能解决你的问题,请参考以下文章

使用 xcode 9.2 的情节提要中的不一致错误

使用情节提要的 Xcode 6.1 OSX 应用程序不呈现窗口或菜单栏

Xcode 5 是不是可以更改情节提要上的字体和大小?

动态更改情节提要或情节提要上的场景

Xcode 11.4。导航的标题颜色从情节提要中变为黑色

带有情节提要的 iPad 上的 UISplitViewController?