我正在尝试创建一个iOS触发应用程序,如果在应用程序启动时触发,它会发送一个信号。我已经生成了触发时要发送的信号,以及一个将应用程序从武装状态更改为非武装状态的按钮。
当我按下使应用程序待命的按钮时,它将进入一个while循环,该循环将运行侦听以查看应用程序是否已被触发,并在触发时发送信号。然而,通过这样做,我无法触摸按钮,现在说,以巩固应用程序。这就是我目前所拥有的:
var trigger = AVAudioPlayer()
func playMySound(){
let triggerSoundURL = NSBundle.mainBundle().URLForResource("trigger", withExtension: "wav")!
trigger = try! AVAudioPlayer(contentsOfURL: triggerSoundURL)
trigger.prepareToPlay()
trigger.play()
}
var armed = 0
@IBAction func arm() {
if(armed==0){
armed=1
armButton.setTitle("Armed", forState: .Normal)
triggering();
}
else{
armed=0
armButton.setTitle("Arm", forState: .Normal)
}
}
func triggering() -> Void {
while(armed==1){
playMySound()
arm()
}
}
最佳答案
你挡住了主线,所以你不能按按钮。
尝试将“触发”功能更改为以下内容:
func triggering() -> Void {
dipsatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)){
while(armed==1){
playMySound()
arm()
}
}
}