ios - 如何在特定点停止 NSTimer?

标签 ios objective-c nstimer

我创建了一个简单的按钮游戏,用户每次点击按钮都会获得一分。该按钮每 1.5 秒随机出现在屏幕上。我希望游戏在 30 秒或 20 个随机按钮弹出后结束。我一直在使用下面的代码让按钮在屏幕上随机弹出:

timer = [NSTimer scheduledTimerWithTimeInterval: 1.5 target:self
         selector:@selector(moveButton:) 
         userInfo:nil 
         repeats:YES];

我已经在头文件中声明了计时器:

NSTimer *timer;
@property (nonatomic, retain) NSTimer *timer;

我已阅读有关 Using Timers 的 Apple 文档但未能完全理解它。我想也许我可以使用:

- (void)countedTimerFireMethod:(NSTimer *)timer{
  count ++;
  if(count > 20){
     [self.timer invalidate];
     self.timer = nil;

但是它不能正常工作。我究竟做错了什么?我是 Objective-C 的新手,所以我不太熟悉它的工作原理。

最佳答案

问题出在您的计时器方法上,您正在传递 moveButton 方法,但在下面的方法中,您停止计时器的方法名称不同,所以请尝试以下操作:-

  self.timer = [NSTimer     
  scheduledTimerWithTimeInterval: 1.5 target:self
     selector:@selector(moveButton:) 
     userInfo:nil 
     repeats:YES];

//只需更改下面的方法名称即可

 - (void)moveButton:(NSTimer *)timer{
  count ++;
  if(count > 20){
    [self.timer invalidate];
    self.timer = nil;}

关于ios - 如何在特定点停止 NSTimer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608044/

相关文章:

ios - 如何消除类 'STEDataSheet' 的重复接口(interface)定义

ios - 如何在 JSTileMap 生成的图 block 中添加PhysicsBody,并将其变成一个PhysicsBody

Ios Swift 切换属性字符串的下划线

ios - 将Objective-C block 传递给performSelector:withObject:afterDelay:是否安全?

ios - 如何让NSTimer和一些操作在后台继续运行?

ios - 在 beginBackgroundTaskWithExpirationHandler 中调用 NSTImer 的选择器方法两次

ios - 为 ColorPicker 创建一个名为 Color 的计算变量的绑定(bind)

objective-c - 无法覆盖简单方法

ios - 如何访问 xcode 项目中的 sqlite 文件?

iOS Swift 和计时器