Утечка setValue UISlider

Эй, надеюсь, кто-нибудь может помочь, так как я не в своем уме!?

У меня есть UISlider. Я хотел бы, чтобы он двигался по мере выполнения задачи (воспроизведение музыки).

Я устанавливаю его значение, когда происходят продолжающиеся события. (прохождение трека)

-(void)updateSlider:(float)value {
    NSLog(@" %f ",value);
    [timeIndexSlider setValue: value animated:YES];
}

В журналах указано, что значение с плавающей запятой в порядке.

но он просто не движется, и я получаю пул без автоматического выпуска - просто утечка сообщения, которое вы получили бы из потока без него в консоли. С моей стороны нет никакой темы.

Есть ли проблема с частым обновлением UISlider?

Есть ли другой способ управления движением ползунков?

Ваше здоровье


person Community    schedule 19.07.2009    source источник
comment
Откуда вы вызываете метод updateSlider? Установите точку останова в методе и посмотрите в отладчике, вызывается ли метод откуда-то неожиданно (поток CoreAudio?).   -  person Nikolai Ruhe    schedule 19.07.2009
comment
Нет ничего неожиданного в вызове в отладчике   -  person    schedule 19.07.2009
comment
как выглядит остальная часть вашего кода? возможно, вы находитесь в каком-то цикле while (music_not_done), когда вы не возвращаетесь и не позволяете обрабатывать сообщения? если вы не используете таймер для обновления слайдера, это может быть вашей проблемой.   -  person David Maymudes    schedule 20.07.2009
comment
Я думаю, должно быть, это похоже на то, что основной поток блокируется, но затрагивается только этот ползунок. Код воспроизведения скрыт от меня в библиотеке, и где-то должен происходить какой-то поток, иначе просто просачивающиеся сообщения не будут будь там. Или это может быть по другой причине?   -  person    schedule 20.07.2009


Ответы (2)


Я думаю, вы получаете обновления в другом потоке, а затем вызываете UIKit в этом потоке.

Попробуйте выполнить PerformSelectorOnMainThread с новым методом, который выполняет обновление (возможно, используя объект NSNumber).

person Andrew Pouliot    schedule 19.07.2009
comment
По-прежнему пропускает объект, передаваемый в селектор выполнения, хотя - person ; 20.07.2009

Вы сохраняете ссылку на UISlider? Если нет, вы можете вызвать -setValue:animated: для нулевой ссылки. Objective-C позволит это, фактически не выполняя метод.

Это потенциально может объяснить, почему вы получаете правильное значение с плавающей запятой, переданное в функцию, но не получаете никаких обновлений...

Установите точку останова, как было предложено, и убедитесь, что ссылка на UISlider не равна нулю.

Если нет, попробуйте опубликовать код, чтобы мы могли посмотреть.

Дайте нам знать, как это происходит,

Том

person thauburger    schedule 19.07.2009
comment
Нет ползунка... и я добавил NSLog(@ %f,timeIndexSlider.value); после звонка и значение правильное!... просто визуально не меняется дисплей. - person ; 19.07.2009