我想通过图表在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”尝试了“YES”。它画得恰到好处,
http://achievstar.tistory.com/234 (见下图)
但是,这些设备无法赶上1000的速度,
所以这样,绘图速度很慢。
有没有办法更好地修复图表?
我真的在这里,我甚至找不到更好的解决方案。
答案 0 :(得分:0)
performSelectorOnMainThread
函数主要用于后台线程,并且想要返回主线程或者想要在主线程上执行函数。
如果您没有使用任何线程或后台线程,则无需使用performSelectorOnMainThread
函数。你可以直接调用那个函数。
尝试使用简单的自我调用updateGraph
。
即[self updateGraph];然后看结果..
答案 1 :(得分:0)
我自己得到了答案!
我每隔一毫秒就收到声音输入,
并在'它内部我也在每毫秒更新了图表。
这意味着我在一毫秒内更新了480的每个fixel。
我想当我收到声音输入时我应该立即更新图表
顺利显示图表。
但我错了。没有必要更新每个fixel。
因为这需要很多过程。
所以我改变了代码来更新UI而不是每毫秒。它的效果非常好。