1

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

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

ответ

0

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

Когда вещи становятся «застрявшими», это, вероятно, означает, что процессор взбалтывает. Акула часто забирает процессор (ну, с точки зрения человека, очень часто) во время короткого всплеска (я бы сохранил его менее 5-10 секунд) и рассказывал, сколько процентов времени, затрачиваемого ЦП на какие задачи.

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

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

+0

Могу ли я использовать акулу, точно знать, какие длинные задачи были вызваны в конкретном потоке? в моем случае основной поток. – Idan

+0

Я не уверен, что это зависит от потока. Я так считаю. – makdad

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