2017-01-13 3 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 перейдите в «Настройки сборки» и установите «Другие быстрые флаги» на -Xfrontend -debug-time-function-body.

Затем перейдите к Сводный отчет навигатор с ⌘-8, где вы увидите самую последнюю сборку (и, возможно, некоторые другие).

enter image description here

Далее, щелкните правой кнопкой мыши на бревне сборки для цели вы построили и выберите Развернуть все Transcripts показать подробный журнал сборки.

enter image description here

Наконец, вы должны увидеть серию зеленых коробок, каждая из которых представляет собой файл или шаг в процессе компиляции. Текст внутри этих полей может занять некоторое время (или щелчок) для правильной загрузки. Если вы правильно настроили флаги сборки, чтобы показать время компиляции функции, вы увидите строку времени сборки слева.

enter image description here

Взятые из here

+0

Спасибо за вашу помощь! Эта функция занимает 21 SECONDS для запуска ... jesus ... Любая идея о том, что я должен делать неправильно? –

+0

@PedroCabaco вы имеете в виду, что эта функция занимает 21 секунду, чтобы скомпилировать? О, МОЙ БОГ. Можете ли вы сделать то, что я упомянул в ответе, отдельно от разных функций и найти функцию «long-to-compile», а затем мы попытаемся сыграть с ней. – Sander

+0

@Sander: спасибо за это. Я также нашел время компиляции 16000ms для одного из своих функций ... но также нашел тоны таких строк: 0.04ms \t \t get {}. И я где-то читал, что это может быть из-за отсутствия литья типов, и это может замедлить работу компилятора. У вас есть какие-нибудь идеи поделиться этим? –

Смежные вопросы