OGeek|极客世界-中国程序员成长平台

标题: ios - 第一个从计时器完成后如何在下面的函数中调用函数 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 17:10
标题: ios - 第一个从计时器完成后如何在下面的函数中调用函数

这是我的简单形式的流程。我仍然需要在 #2 完成运行后完成后调用 decisionMaker() 时间到了,并将用于测量的全局变量带到决策者() 进行案例测试

TestButtonTAPPED() 和调用:

  1. recordTimer()
  2. gatherInput()

  3. 选择器:levelTimerCallback()

  4. decisionMaker()

    // 1.
    func recordTimer() {
        /* After 10 seconds, let's stop the recording process */
        let delayInSeconds = 10.0
        let delayInNanoSeconds = DispatchTime.now() + Double(Int64(delayInSeconds * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
    
        DispatchQueue.main.after(when: delayInNanoSeconds, execute: {
            self.soundRecorder!.stop()
            self.handBtn.isHidden = false
        })
    
    }
    
    // 2.
    func gatherInput() {
        levelTimer = Timer.scheduledTimer(timeInterval: 0.9, target: self, selector: #selector(DBListener.levelTimerCallback), userInfo:nil, repeats: true)
    }
    
    //3.
    func levelTimerCallback() {
        if soundRecorder.averagePower(forChannel: 0) > -30
        {
            // Do gathering for vaiables
        }
    }
    
    
    // 4.
    func decisionMaker() {
        // case statments here for final measurement
    }
    
    
    
    @IBAction func handTapped(_ sender: UIButton) {
    
        clearGlobalVariablesOnTap()
        listner()
        soundRecorder.record()
        recordTimer()
        dbListener.gatherInput()
    
    }
    



Best Answer-推荐答案


@IBAction func handTapped(_ sender: UIButton) {
    clearGlobalVariablesOnTap()
    listner()
    soundRecorder.record()
    recordTimer()
}

func recordTimer() {

    //As soon as this method is called this portion will get executed
    dbListener.gatherInput()

    /* After 10 seconds, let's stop the recording process */
    let delay = 10.0
    let delayInSeconds = DispatchTime.now() + DispatchTimeInterval.seconds(delay)


    //After 10 seconds this block will execute
    DispatchQueue.main.after(when: delayInSeconds, execute: {
        self.soundRecorder!.stop()
        self.handBtn.isHidden = false
        self.levelTimer.invalidate = true
        self.decisionMaker()
    })

}

func gatherInput() {
    levelTimer = Timer.scheduledTimer(timeInterval: 0.9, target: self, selector: #selector(DBListener.levelTimerCallback), userInfo:nil, repeats: true)
}

func levelTimerCallback() {
    if soundRecorder.averagePower(forChannel: 0) > -30
    {
        // Do gathering for vaiables
    }
}


func decisionMaker() {
    // case statments here for final measurement
}

关于ios - 第一个从计时器完成后如何在下面的函数中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749322/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4