2017-01-13 141 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 {}。而且我在某處讀到這可能是由於缺少類型轉換,並且可能會降低編譯器速度。你有什麼見解可以分享嗎? –