1

Meine App Haupt-Thread zeigt einen Film am Anfang, während andere Thread Hintergrundaufgaben erledigen. Einige verwenden jedoch PerformSelectorInMainThread, um etwas zu tun. Was passiert ist, dass manchmal der Film auf unbestimmte Zeit stecken bleibt, manchmal nicht, und manchmal nach ein paar Sekunden frei wird. Ich versuche, es zu debuggen, aber wenn ich XCode pausiere, während die App feststeckt, sehe ich nur Assembler-Code und ich kann nichts wirklich davon verstehen. (Ich denke, etwas wie "Symbole" auf Windows wäre cool) Gibt es eine Möglichkeit, gründlicher zu analysieren, was läuft auf dem Haupt-Thread und könnte mein Video stecken, während es spielt? Außerdem, wie kommt es, dass das Video sowieso hängen bleibt, wenn ich ein Video vom Hauptthread abspiele, während ein anderer Thread PerformSelectorInMainThread aufruft, was wirklich passiert (ich nehme an, es würde den Selektor als Ereignis hinzufügen, aber den Film nicht stören vom Spielen bis zum Ende)?MPMoviePlayerController Thread Lock Problem - Iphone Entwicklung

Danke für Ihre Hilfe !!

Antwort

0

Haben Sie versucht, mit Shark (eines der Instrumente Tools) Proben zu analysieren?

Wenn die Dinge "stecken bleiben", bedeutet dies wahrscheinlich, dass die CPU in Bewegung ist. Shark tastet die CPU während eines kurzen Bursts (naja, in menschlicher Hinsicht sehr häufig) ab (ich würde es unter 5-10 Sekunden halten) und sagt Ihnen, wie viel Prozent der Zeit die CPU für welche Aufgaben benötigt.

Es tut genau das, was Sie erwähnen - Reverse Engineers alle Assembly-Code, um eher wie der Debugger aussehen (naja, nicht 100%, aber genug).

Das wäre der erste Schritt - identifizieren die Prozessor-schwere Aufgabe, die Ihr performSelectorOnMainThread:-Code ruft, die das Video zu verkleben verursacht. Dann, sobald Sie wissen, was es ist - die Antwort wird entweder offensichtlich sein - oder Sie müssen Ihre Architektur ändern :)

+0

Kann ich mit Hai genau wissen, welche langen Aufgaben für einen bestimmten Thread aufgerufen wurden? in meinem Fall der Hauptfaden. – Idan

+0

Ich bin mir nicht sicher, ob es Thread-spezifisch ist. Ich glaube schon. – makdad