2010-07-04 24 views
0

是否有可能做到这样的事情?1秒钟:客观c编码帮助

if (myVariable == 100 for more than 1 second) { 
} 

因此,如果myVariable等于100超过1秒,请执行一些操作。

谢谢! Elijah

+0

我会说,你似乎采取了错误的方法来解决问题。这段代码的上下文是什么?你为什么想要做这样的事情?也许我们可以找出另一种方法。 – 2010-07-04 13:47:02

+0

嗯,我正在做一个语音识别引擎,以便当你停止说话时(声音低于一定水平),它从文本字段(按回车键)发送命令。作为故障安全(几乎...),我只想在完全确定讲话者已停止讲话时发送命令。有任何想法吗?? – objectiveccoder001 2010-07-04 18:36:44

回答

0

您可以从if()语句的主体中启动NSTimer,该语句具有1秒的计时器。所以像

if(myVariable >= 100 && myTimer == nil){ 
    //NSTimer code here 
}else if(myVariable < 100 && myTimer !=nil){ 
    //Invalidate timer 
    //Set myTimer to nil 
} 

如果你得到计时器来调用一个方法,然后做你想要的。

这应该工作,但我不禁觉得有一个更好的解决方案,您尝试解决的实际问题。

1

我想这样的事情是不可能的。不同的方法可能会解决这个问题即每次有人改变myVariable时,您可以留下某种时间戳,然后看看自上次更改以来已经过了多少时间。

2

您可以存储将myVariable设置为新值的时间(如果您在这个地方使用setter方法,那么很容易)。然后启动一秒钟后触发的计时器,并检查您是否在此期间未更改该值。

尽管这是一种不寻常的模式,并且可能有更好的方法来完成您的尝试。

+0

有什么其他方法可以做到这一点? – objectiveccoder001 2010-07-04 18:43:06