Проблемы в использовании executeSelectorOnMainThread в каждую миллисекунду - PullRequest
0 голосов
/ 03 января 2012

Я хочу показать амплитуду звука в реальном времени на графике UIView.

Я установил частоту дискретизации звука как 1000 в секунду.

И, чтобы обновить график, мне это понравилось. это вызывается каждую миллисекунду.

[Audio performSelectorOnMainThread:@selector(updateGraph) withObject:nil waitUntilDone:NO];

и внутри updateGraph это так.

- (void) updateGraph{
    [graphview setNeedsDisplay];
}

Но он рисует график под углом.

http://achievstar.tistory.com/234 (Я новичок в этом сайте, поэтому я не могу загрузить фотографии)

(я полагаю) это из-за "waitUntilDone: NO".

iphone 4S, а также iPad2 не смогли увеличить скорость до 1000.

Я также пробовал «ДА» для «waitUntilDone». Правильно рисует,

http://achievstar.tistory.com/234 (см. рисунок ниже)

но также устройства не могли догнать скорость 1000,

таким образом, скорость отображения была медленной.

есть ли способ исправить график лучше?

У меня действительно есть запас, и я больше не могу найти хорошего решения.

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Я только что получил ответ сам!

Я получал звуковой сигнал в каждую миллисекунду,

, а внутри него я также обновлял график также в каждую миллисекунду.

это означает, что я обновлял каждый фиксатор 480 за миллисекунду.

Я подумал, что мне следует обновить график немедленно, когда я получу звуковой сигнал,

, чтобы показать график плавно.Но я был неправ.Это не было необходимо для обновления каждого исправления.

Потому что это действительно занимает много времени.

Поэтому я изменил код, чтобы обновлять интерфейс не каждую миллисекунду.и это работает очень хорошо.

0 голосов
/ 03 января 2012

performSelectorOnMainThread функция в основном используется, когда вы находитесь в фоновом потоке, и вы хотите вернуться в основной поток, или вы хотите выполнить функцию в основном потоке.

, если вы не используете какой-либопоток или фоновый поток, тогда нет необходимости использовать функцию performSelectorOnMainThread.Вы можете напрямую вызвать эту функцию.

попробуйте вызвать updateGraph с помощью простого self.

ie [self updateGraph];а затем увидеть результат ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...