MPMoviePlayerController Проблема блокировки потока - разработка Iphone - PullRequest
1 голос
/ 10 декабря 2010

Основной поток моего приложения отображает фильм в начале, в то время как другой поток выполняет фоновые задачи.Некоторые, однако, используют PerformSelectorInMainThread, чтобы сделать некоторые вещи.Случается так, что иногда фильм просто застревает на неопределенное время, иногда нет, а иногда освобождается через пару секунд.Я пытаюсь отладить его, однако, когда я приостанавливаю XCode, когда приложение застряло, я вижу только ассемблерный код, и я ничего не могу понять из него.(Полагаю, что-то вроде «символов» на окнах было бы здорово) Есть ли способ более тщательно проанализировать, что происходит в главном потоке, и может ли застревать мое видео во время его воспроизведения?Более того, почему видео в любом случае застревает, если я играю видео из основного потока, в то время как другой поток вызывает PerformSelectorInMainThread, что происходит на самом деле (я предполагал, что это добавит селектор как событие, но не будет мешать фильмуиграть до конца)?

Спасибо за помощь !!

1 Ответ

0 голосов
/ 11 декабря 2010

Пытались ли вы использовать Shark (один из инструментов инструментов) для анализа образцов?

Когда что-то «залипает», это, вероятно, означает, что процессор работает.Акула время от времени производит выборку ЦП (ну, по-человечески, ОЧЕНЬ часто) во время короткой серии (я бы держал его менее 5-10 секунд) и сообщает вам, какой процент времени ЦП тратит на какие задачи.

Он делает именно то, что вы упомянули - обратный инжиниринг всего кода сборки, чтобы он больше походил на отладчик (ну, не на 100%, но достаточно).

Это был бы первый шаг - определение процессора- тяжелая задача, которую вызывает ваш код performSelectorOnMainThread:, который заставляет видео всплывать.Затем, как только вы узнаете, что это такое - ответ либо будет очевиден, либо вам придется изменить свою архитектуру:)

...