Как можно улучшить производительность 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