如何在iOS上设置两个按钮来打开/关闭振动?
这就是我想要做的事情:
@property (nonatomic) BOOL vibeIsOn;
- (IBAction)startVibrating:(id)sender {
dispatch_queue_t vibeQueue = dispatch_queue_create("vibe", NULL);
dispatch_sync(vibeQueue, ^{
for (;!self.vibeIsOn;)
{
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
});
dispatch_release(vibeQueue);}
- (IBAction)stopVibrating:(id)sender {
self.vibeIsOn = YES;
AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);}
不幸的是,当我按下“盯着振动”按钮时,它只是无法跳出for循环,但我确实把for循环放在一个线程中,对吧?
帮助!!!这段代码有什么问题吗?
答案 0 :(得分:4)
您同步调度队列,因此调用线程会等待执行完成(这种情况从未发生,因为您的for循环永远不会停止)。请改用dispatch_async
。