2017-01-13 33 views
1

我有以下方法,如果我评论它,在模拟器或常规iPhone上构建时不会有任何延迟。 如果我使用这种方法,它会在运行之前延迟很多时间。索引处理文件Xcode超级缓慢构建并运行

下面的代码

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) 
} 

我看,这是由于代码效率低下......任何人能发现我的错误造成的?

回答

1

我的建议是,以这种方法分离到若干个,并期待在每一个comilation时,发现有人放错了地方

对于这个回合的debug-time-function-bodies选项编译器。在您的Xcode项目中,转到Build Settings并将Other Swift Flags设置为-Xfrontend -debug-time-function-bodies

然后跳转到构建报告带⌘-8的导航器,您将在其中看到最新版本(以及其他可能的版本)。

enter image description here

接下来,生成日志为您构建的目标右键单击并选择全部展开成绩单,显示详细的生成日志。

enter image description here

最后,你应该看到一系列绿框,每个代表在编译过程中一个文件或台阶。这些框内的文字可能需要一些时间(或点击)才能正确加载。如果您正确设置了构建标志以显示函数编译时间,则应该在左侧看到一行构建时间。

enter image description here

here

+0

采取谢谢您的帮助!这个函数需要21秒才能运行...耶稣...任何想法我应该做错了什么? –

+0

@PedroCabaco你是说,这个函数需要21秒才能编译?我的天啊。你能做什么,我在答案中提到的,分开到不同的功能,并找到“长编译”功能,然后我们将尝试玩它。 – Sander

+0

@桑德:谢谢你。我也发现了一个16000ms的编译时间,我的功能之一......但也发现了这样的线条色调:0.04ms \t \t get {}。而且我在某处读到这可能是由于缺少类型转换,并且可能会降低编译器速度。你有什么见解可以分享吗? –