【发布时间】:2011-02-20 08:28:18
【问题描述】:
我正在为此苦苦挣扎。我看到了一些可以执行此操作的代码:
- (void)startTimer {
pauseTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doActions) userInfo:nil repeats:YES];
}
然后在 doActions 中调用它。
问题是我想在按下按钮时调用它,并且执行操作是 IBaction。我不断收到sigAbrt。
有人可以给我一些示例代码,您可以在按下按钮时每 1 秒将标签从“on”更改为“off”吗?
编辑
我的意思是如果 doActions 看起来像这样
- (IBAction) doActions {
for(int j; j<100; j++){
theLabel.hidden != theLabel.hidden;
//Does invalidate timer go here?
}
}
【问题讨论】:
-
您可以发布您的
doActions方法吗?我认为这将帮助我们引导您朝着正确的方向前进——无论是出于设计目的还是功能目的。 -
"然后在 doActions 中调用它。"等等:你是说在
-(IBAction)doActions中有一行[self startTimer];?这意味着每隔约 1 秒,您将为您已经创建的每个计时器创建一个额外的计时器。 (这意味着大约 20 秒后,您将超过惊人的 100 万 个计时器...) -
仍然不确定您在谈论以下两个动作序列中的哪一个?序列1:用户触摸屏幕上的按钮,用户再次抬起手指,然后应该每秒切换一次但不超过100次。序列 2:用户触摸屏幕,手指仍然向下时每秒切换一次,直到手指再次抬起,但不超过 100 次。无论哪种方式: for 循环都无法工作。当您启动计时器时,设置一个您递增的 ivar,并在您的 separate
timerFired方法中检查。如果大于 100,则计时器无效
标签: iphone loops for-loop nstimer