Timer在iOS 4.2上正常运行,但在iOS 5上运行不正常

时间:2011-11-25 13:06:01

标签: iphone objective-c cocoa-touch ios4 ios5

在我的应用中,

我有一个3标签,

在第一个标签上,我有一个按下开始按钮时启动的计时器。

当我们来自另一个标签时,计时器没有得到更新。

为了更新计时器,我使用下面的代码:

myticker = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(ShowActicity) userInfo:nil repeats:YES];


 -(void)ShowActicity
 {
     Here I have the ticks,minute,hour  values   


      ticks =ticks + 1;
        if(ticks > 59)
        {
            minute = minute + 1;
            ticks = 0;
            if(minute > 59)
            {
                hour = hour + 1;
                minute = 0;
                if(hour > 23)
                {
                    hour = 0;
                }
            }
        }


        [lbl_timer setText:[NSString stringWithFormat:@"%02d:%02d:%02d",hour,minute,ticks]];


 }

我的计时器使用Base SDK iOS 4.2正常更新,但在iOS 5上无效。 可能有什么不对?

2 个答案:

答案 0 :(得分:0)

这可能不是你的问题,但选择器不正确,来自Apple文档:

选择器必须具有以下签名:

- (void)timerFireMethod:(NSTimer*)theTimer

所以你的NSTimer调用应该是(注意尾随“:”

myticker = [NSTimer scheduledTimerWithTimeInterval:(1.0) target:self selector:@selector(ShowActicity:) userInfo:nil repeats:YES];

并且目标方法具有签名:

- (void)ShowActicity:(NSTimer*)theTimer

注意,使用初始小写字母命名方法是Objective-C约定,类具有前导大写字符。

答案 1 :(得分:0)

在4.3项目中,main.m替换为ios5 main.m文件。在appdelegate中更改

   @interface SimpleTimerAppAppDelegate : NSObject 

  @interface SimpleTimerAppAppDelegate : UIResponder