我正在开发一个音乐应用程序,所以我真的不能批准任何延迟。
我正在使用心爱的 touchesBegan/Moved/Ended 来处理我的触摸。一切都很顺利,我设法合成了一个音调(使用 AudioUnit)并在手指下显示了一个发光(使用 GLKit),如果同时击中的音符/触摸少于 4-7 个,这一切都很好,然后它会发疯并使应用程序卡住。
我明白这是因为我正在做很多工作(使用 GLKit 界面和我为合成引擎制作的界面)并且我需要一种方法来修复它。
我的代码是这样构建的:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for(UITouch *touch in touches)
{
CGPoint lePoint = [touch locationInView:self.view];
doing some calculataions for synth engine.......
actually making the sound avilable to play through the interface........
then I start to create the sprite object for the glow
attaching it to the nsarray of the shapes
//rejoycing in the awesomness of the sound
adding the touch to the active touches array
}
}
我在touchesEnded中做完全相反的事情。
因此,在我试图让它更好地工作时,我尝试将 GCD 用于 GLKit 的东西,这样它就可以异步发生,它起作用了,但有时我会看到屏幕上出现发光,因为它不在数组中时touchesEnded 试图删除它。
所以这没有用,我有点无能为力,如果有人能帮助我,我会很感激。