2014-09-09 11 views
7

Was könnte pushViewController extrem langsam machen? (Es dauert 30 + Sekunden für die neue Ansicht angezeigt)pushViewController Extrem langsam

Grundsätzlich bin ich so etwas wie dies zu tun:

SecondViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"correctID"]; 
vc.something = something; 
[self.navigationController pushViewController:vc animated:YES]; 
CLS_LOG(@"Pushed Controller..."); 

und ich bin am Anfang viewDidLoad innerhalb des zweiten View-Controller anzumelden. Ich untergliedere keine anderen Methoden.

Zwischen Pushed Controller ... und dem nächsten Log von viewdidload gibt es eine große Verzögerung.

Wie würden Sie dies debuggen?

Ich habe es schon mit dem TimeProfiler versucht aber anscheinend zeigt es nichts.

+0

Ich würde vermuten, dass etwas in Ihrem SecondViewController des 'viewDidLoad',' viewWillAppear' oder 'viewDidAppear' Methoden eine sehr lange Zeit einnehmen. Versuchen Sie zum Debuggen, den Inhalt zu kommentieren und festzustellen, welches das Problem verursacht. –

+5

Sind Sie sicher, dass Sie diesen Code im Hauptthread ausführen? Zeige uns mehr Kontext. –

Antwort

14

Hatte vor ähnliches Problem, versuchen Sie die folgenden

dispatch_async(dispatch_get_main_queue(), ^{ 
    // your navigation controller action goes here 
}); 
+0

Sie haben Recht, das hat den Trick gemacht. Ich habe diesen Code nicht im Hauptthread ausgeführt. –