4

我正在开发一个与视频流相关的 iOS 项目。UI 中的控件之一是 MPVolumeView。问题是当我滑动控制改变音量时,它似乎使用了很多 CPU。事实上,当我使用滑块时,UI 变得很慢。如何提高性能?,也许我做错了什么?

来自 Instruments 的 CPU 负载的参考图像。 在左侧仅流式传输中,右侧的峰值为流式传输+音量滑动。

来自 Instruments 的 CPU 负载的参考图像。在左侧仅流式传输中,右侧的峰值为流式传输+音量滑动。

谢谢。

编辑:

这就是我将控件添加到视图的方式:

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

“self”是一个自定义视图,继承自 UIView,但我没有使用 xib 和 drawRect。我只是在“initWithFrame:frame”方法中添加所有控件。

4

1 回答 1

0

观察调用了多少次 init with frame。有时我看到它不止一次被调用,有时经常被调用,具体取决于具体情况。您可能只想在首次设置视图时分配卷视图。听起来它可能会一次又一次地设置音量视图。

一种可能是使卷视图成为类属性(私有或公共)

 @property (nonatomic, retain) MPVolumeView *mpVolume;

然后当然... @synthesize mpVolume = _mpVolume

然后在 initWithFrame 中检查它是否为 nil,然后 alloc

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

然后在 dealloc 中释放 mpVolume

于 2012-08-02T15:05:47.190 回答