Xcode 12缓慢构建一个文件



我的Xcode项目中有一个类似于以下的数据结构:

struct Group: {
let name: String
var items: [Thing]
}
struct Thing: {
let description: String
let variants: [Thing]?
}
var data: [Group] = 
[Group(name: "Group 1",
items: [Thing(description: "Thing 1", variants: nil),
Thing(description: "Thing 2", variants: nil),
... ]),
Group(name: "Group 2",
items: [Thing(description: "AnotherThing 1", variants: [Thing(description: "Variant Thing1)",
Thing(description: "Variant Thing2)",
... ]),
Thing(description: "AnotherThing 2", variants: [Thing(description: "Variant Thing 101"),
Thing(description: "Variant Thing 102"),
... ]),
... ])]

总共有大约10个集团,其中包括大约3200个Thing;Thing’s在";项目";阵列和";变体";阵列。

Xcode编译这个文件需要3到5分钟。我该怎么做才能将此时间缩短到合理的时间?

旁白:除了编译速度慢之外,这种数据结构还让Xcode探查器变得疯狂。探查器通常会占用所有交换空间并使机器崩溃。

尝试将分配更改为

var data: [Group] = [Group(name: "Group 1", ....

根据我的经验,这些速度减慢主要是由于类型推断,明确指定类型有很大帮助。

如果这不起作用,请听从Joakim Danielson的建议。

我并没有像马特建议的那样做,但他的建议让我找到了一种做这件事的方法,不要太难看。

struct Thing: {
let description: String
var variants: [Thing]?
}

struct Group: {
let name: String
var items: [Thing]
}

let group1Things: [Thing] = [
Thing(description: "Thing 1", variants: nil),
Thing(description: "Thing 2", variants: nil),
... ]

let group1: Group = Group(name: "Group 1", items: group1Things)

let group2Things: [Thing] = [
Thing(description: "AnotherThing 1", variants: [Thing(description: "Variant Thing1)",
Thing(description: "Variant Thing2)",
... ]),
Thing(description: "AnotherThing 2", variants: [Thing(description: "Variant Thing 101"),
Thing(description: "Variant Thing 102"),
... ]
let group2: Group = Group(name: "Group 2", items: group2Things)

let data: [Group] = [group1, group2, ...]

这使得编译时间从3-5分钟减少到了30秒。我可以接受。我可能会通过打破";变体";阵列。

相关内容

最新更新