这是我的简单形式的流程。我仍然需要调用decisionMaker(),当#2完成后运行完成时间为up并将测量的全局变量带到决策者()进行案例测试
TestButtonTAPPED()并调用:
gatherInput()
selector:levelTimerCallback()
决策者()
// 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()
}
答案 0 :(得分:0)
@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
}