代码之家  ›  专栏  ›  技术社区  ›  Steph Thirion

延迟呼叫,有取消的可能吗?

  •  5
  • Steph Thirion  · 技术社区  · 16 年前

    如何触发延迟,假设我想在3秒钟后调用一个方法(一次),如果需要,如何取消该调用?

    3 回复  |  直到 16 年前
        1
  •  7
  •   Ben Gottlieb    16 年前

    您也可以使用 -[NSObject performSelector:awithObject:afterDelay:] +[NSObject cancelPreviousPerformRequestsWithTarget:selector:object] .

        2
  •  3
  •   Stephen Darlington    16 年前

    使用 NSTIMER . 使用此设置呼叫 方法 三秒钟后。只能调用一次:

       [NSTimer scheduledTimerWithTimeInterval: 3
                                        target: self
                                      selector: @selector(method:)
                                      userInfo: nil
                                       repeats: NO];
    

    方法 需要如下所示:

    - (void) method: (NSTimer*) theTimer;
    

    您可以使用 用户信息 (设置为 在上面的例子中)。它可以在方法中访问为 [计时器用户信息] .

    使用 使无效 方法来取消它。

        3
  •  1
  •   adam    16 年前

    在你的头上……

    NSTimer *timer;
    

    当你想设置…

    timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO];
    

    当你想取消…

    [timer invalidate];