我有一个在应用程序启动时打开的主视图(或 cocos2d 中的场景)。从那里我调用 audioUnit 来收听来自麦克风的输入音频。它工作得很好(audioUnit 上的回调总是被调用并做一些事情),但我可以看到它占用了主线程——这是我不想要的,因为主场景UILabel
和其他需要成为主线程的东西才能被改变。
在main scene
我开始时:
remoteIns=[[remoteIO alloc]init]; //turn on the callback function on class remoteIO .
[remoteIns StartListeningWithFrequency]; // this function takes the main thread
然后当我main scene
稍后签入时:
NSLog(@"isMainThread%d",[NSThread isMainThread]);
我可以看到它不是主线程,因此我无法更改UILabels
它。
我需要启动audioUnit函数(另一个类)并将其设置在另一个线程中,保持主场景为主线程,并让audioUnit
工作正常。