Как можно улучшить производительность MPVolumeView?

Я работаю над проектом iOS, связанным с потоковым видео. Одним из элементов управления в пользовательском интерфейсе является MPVolumeView. Проблема в том, что когда я перемещаю элемент управления для изменения громкости, он, кажется, использует много ЦП. И на самом деле, пользовательский интерфейс становится медленным, пока я использую ползунок. Как можно улучшить производительность? Может я что-то не так делаю?

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

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

Благодарю.

РЕДАКТИРОВАТЬ:

Вот как я добавляю элемент управления к представлению:

MPVolumeView *mpVolume = [[MPVolumeView alloc] initWithFrame:CGRectMake(32,
                                                                        56,
                                                                        160,
                                                                        9)];
[self addSubview:mpVolume];
[mpVolume release];

"self" - это пользовательское представление, наследуемое от UIView, но я не использую xib и drawRect. Я просто добавляю все элементы управления в методе "initWithFrame:frame".

1 ответ

Посмотрите, сколько раз вызывается init с frame. Иногда я видел, как его вызывали не раз, а иногда часто, в зависимости от ситуации. Вы, вероятно, хотите выделить только объемное представление, когда оно впервые настроено. Похоже, что это может быть настройка громкости снова и снова.

Один из возможных способов - сделать объемное представление свойством класса (частным или общедоступным).

 @property (nonatomic, retain) MPVolumeView *mpVolume;

Тогда, конечно... @synthesize mpVolume = _mpVolume

Затем в initWithFrame просто проверьте и посмотрите, равен ли он нулю, а затем выделите

 if(_mpVolume == nil){
      _mpVolume = [[MPVolumeView alloc] initWithFrame:CGRectMake(32,56,160,9)];
      [self addSubview:_mpVolume];
 }

Затем выпустите mpVolume в dealloc

Другие вопросы по тегам