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 在更改时为每个应用程序目标编译情节提要的主要内容,如果未能解决你的问题,请参考以下文章