如何触发延迟,假设我想在3秒内调用一个方法(一次),如果需要,我该如何取消该调用呢?
答案 0 :(得分:7)
您还可以使用-[NSObject performSelector:awithObject:afterDelay:]
和+[NSObject cancelPreviousPerformRequestsWithTarget:selector:object]
。
答案 1 :(得分:3)
使用 NSTimer 。使用此选项可在三秒钟内设置对方法的调用。它只会被调用一次:
[NSTimer scheduledTimerWithTimeInterval: 3
target: self
selector: @selector(method:)
userInfo: nil
repeats: NO];
方法需要如下所示:
- (void) method: (NSTimer*) theTimer;
您可以使用 userInfo (在上例中设置为 nil )将参数传递给方法。它可以在方法中作为 [theTimer userInfo] 。
进行访问使用NSTimer上的 invalidate 方法取消它。
答案 2 :(得分:1)
..
NSTimer *timer;
当您想要设置..
timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO];
当你想要取消..
[timer invalidate];