Ios 索引处理文件Xcode超慢速构建和运行

Ios 索引处理文件Xcode超慢速构建和运行,ios,swift,xcode,Ios,Swift,Xcode,我有以下方法,如果我评论一下,在模拟器或普通iPhone上构建时不会有延迟。 如果我使用这种方法,它会在运行之前延迟很多时间 这是密码 func createFirstRowView() { let b = SKSpriteNode(imageNamed: "obj_bg_card1") b.xScale = 0.8 b.yScale = 0.8 r = SKShapeNode(rectOf: CGSize(width: b.size.width*4, heigh

我有以下方法,如果我评论一下,在模拟器或普通iPhone上构建时不会有延迟。 如果我使用这种方法,它会在运行之前延迟很多时间

这是密码

func createFirstRowView() {
    let b = SKSpriteNode(imageNamed: "obj_bg_card1")
    b.xScale = 0.8
    b.yScale = 0.8
    r = SKShapeNode(rectOf: CGSize(width: b.size.width*4, height: b.size.height))

    r.position = CGPoint(x: frame.midX, y: frame.midY)
    //r.strokeColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0)
    self.addChild(r)

    for i in 0..<4{
        let bg = SKSpriteNode(imageNamed: "obj_bg_card1")

        bg.xScale = 0.8
        bg.yScale = 0.8

        let lel = 0.5 + (Double(i)*1)

        bg.position = CGPoint(x: -bg.size.width*2 + bg.size.width*CGFloat(lel), y: 0)

        r.addChild(bg)

    }
    r.position = CGPoint(x: frame.midX, y: frame.midY*1.4)

    let q = SKSpriteNode(imageNamed: "obj_bg_card1")
    q.xScale = 0.8
    q.yScale = 0.8

    t = SKShapeNode(rectOf: CGSize(width: q.size.width*4, height: q.size.height))

    t.position = CGPoint(x: frame.midX, y: frame.midY)
    //t.strokeColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0)

    self.addChild(t)

    for k in 0..<4{
        let bg = SKSpriteNode(imageNamed: "obj_bg_card1")

        bg.xScale = 0.8
        bg.yScale = 0.8

        let lel = 0.5 + (Double(k)*1)

        bg.position = CGPoint(x: -bg.size.width*2 + bg.size.width*CGFloat(lel), y: 0)

        t.addChild(bg)

    }
    t.position = CGPoint(x: frame.midX, y: frame.midY*0.6)
}
func createFirstRowView(){
设b=SKSpriteNode(图像名为:“obj_bg_card1”)
b、 xScale=0.8
b、 yScale=0.8
r=SKShapeNode(矩形:CGSize(宽度:b.size.width*4,高度:b.size.height))
r、 位置=CGPoint(x:frame.midX,y:frame.midY)
//r、 strokeColor=UIColor(红色:0,绿色:0,蓝色:0,alpha:0)
self.addChild(r)

对于0..中的i,我的建议是将此方法分为几个方法,并查看每个方法的编译时间,找出错误的位置

为此,打开编译器的
调试时间函数体
选项。在Xcode中的项目中,转到“生成设置”并将其他Swift标志设置为-Xfrontend-debug time函数体

然后使用⌘-8中,您将看到最新的构建(可能还有其他构建)

接下来,右键单击您构建的目标的构建日志,并选择ExpandAllTranscripts以显示详细的构建日志

最后,您应该看到一系列绿色框,每个框代表编译过程中的一个文件或步骤。这些框中的文本可能需要一些时间(或单击)才能正确加载。如果您正确设置生成标志以显示函数编译时间,您应该会看到左侧的一行生成时间


摘自

谢谢你的帮助!这个函数需要21秒才能运行……天哪……你知道我做错了什么吗?@PedroCabaco你的意思是,这个函数需要21秒才能编译?天哪。你能按照我在回答中提到的,将它分为不同的函数,并找到“长时间编译”吗函数,然后我们将尝试使用它。@Sander:谢谢。我在函数中还发现了一个16000ms的编译时间…但也发现了类似这样的行的音调:0.04ms get{}。我在某个地方读到,这可能是由于缺少类型转换,可能会减慢编译器的速度。你对此有什么见解可以分享吗?@EdouardBarbier 0.04ms get{},因为我认为它只是一个类似于var属性的getter:type{return value}。它们像往常一样编译函数。