• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 第一个从计时器完成后如何在下面的函数中调用函数

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:10:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

这是我的简单形式的流程。我仍然需要在 #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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap