iPhone: NSTimer

3

有一个问题... 我有一个计时器

 [NSTimer scheduledTimerWithTimeInterval:120                                                              
target:self                                           
selector:@selector(action1:)                                                      
userInfo:nil                                                       
repeats:YES];

但是当我切换到应用程序的另一个屏幕时,我想改变选择器...我该如何改变选择器?我知道我可以停止计时器并设置一个新的计时器,但我不想重置剩余时间以执行操作...谢谢。

3个回答

3

你无法修改NSTimer的目标信息,因为它在实例化方法中就已经确定了,而且没有任何属性可以后期修改。

你需要使当前计时器失效并创建一个新的计时器来定位到新的目标。


1

看起来选择器是不可变的。我会将这个功能封装到一个小类中,并加上一个 setSelector 方法。在内部使用私有选择器创建 NSTimer。在该方法内部,调用使用 setSelector 方法设置的外部选择器。


1

你可以调用一个通用选择器,根据显示的页面调用其他方法:

    [NSTimer scheduledTimerWithTimeInterval:120                                                              
    target:self                                           
    selector:@selector(selectorDispatcher)                                                      
    userInfo:nil                                                       
    repeats:YES];

然后,您的方法选择器调度程序将看起来像这样:

    - (void) selectorDispatcher{

         if(pageshown1)
            [self callmethod1];
         else
            [self callmethod2];
    }

我觉得这应该可以运行...让我知道吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接