1

我的應用程序主線程在開始時顯示電影,而其他線程正在做後臺任務。 一些然而,正在使用PerformSelectorInMainThread做一些東西。 發生的事情是,有時電影會無限期地卡住,有時候不會,有時幾秒鐘後就會自由。 我試圖調試它,但是當我暫停XCode而應用程序卡住時,我看到的只是彙編代碼,我無法真正理解它。 (我想在Windows上像「符號」的東西會很酷) 有沒有辦法更徹底地分析主線程上運行的內容,並可能在播放視頻時卡住了我的視頻? 此外,無論如何,如果我從主線程播放視頻,而其他線程調用PerformSelectorInMainThread,實際發生了什麼(我認爲它會將選擇器添加爲事件但不會干擾電影從打到結束)?MPMoviePlayerController線程鎖定問題 - iPhone開發

感謝您的幫助!

回答

0

您是否嘗試過使用Shark(儀器工具之一)來分析樣本?

當事情變得「卡住」時,可能意味着CPU攪動了。鯊魚在短時間內(經常保持在5-10秒內)每隔一段時間就會對CPU進行一次採樣(以人爲條件,非常頻繁地),並告訴你CPU花費在什麼任務上的時間百分比。

它確實如你所說 - 反向工程師的所有彙編代碼看起來更像調試器(好吧,不是100%,但足夠)。

這將是第一步 - 確定您的performSelectorOnMainThread:代碼調用的處理器繁重任務,導致視頻粘連。然後,一旦你知道它是什麼 - 答案將是顯而易見的 - 或者你將不得不改變你的架構:)

+0

我可以使用鯊魚確切知道在特定線程上調用了多長的任務嗎?在我的情況下,主線程。 – Idan 2010-12-11 22:35:12

+0

我不確定它是否是線程特定的。我相信是這樣。 – makdad 2010-12-15 17:59:04