gpt4 book ai didi

iphone - 在触发之前停止 'performSelector afterDelay'

转载 作者:太空狗 更新时间:2023-10-30 03:46:35 25 4
gpt4 key购买 nike

我使用以下代码在 4 秒延迟后开始重复 NSTimer:

- (void)viewDidLoad {
[self performSelector:@selector(startTimer) withObject:self afterDelay:4];
}
- (void)startTimer {
NSTimer *mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doSomething) userInfo:nil repeats:YES];
}
- (void)doSomething {
NSLog(@"What up!");
}

问题是我可能需要在 4 秒结束之前取消调用 startTimer。有没有办法做到这一点?我实际上更愿意首先不使用 performSelector(看起来很乱)。要是 NSTimer 有类似这样的东西就好了……

NSTimer *mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 afterDelay:4.0 target:self selector:@selector(doSomething) userInfo:nil repeats:YES];

...那么这将是完美的,因为我可以调用以下内容:

[myTimer invalidate];

非常感谢任何帮助或提示 =)

附言我在 NSObject 类引用中找到了名为 cancelPreviousPerformRequestsWithTarget 的东西。然而,似乎不是我可以从运行此代码的地方调用的方法。如果一切恢复正常,欢迎您提供反馈!

最佳答案

请通过 SP 帖子链接

Stopping a performSelector: from being performed

[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(sr)
object:nil];

-performSelector:withObject:afterDelay: 的文档指出了取消排队执行请求的方法。

关于iphone - 在触发之前停止 'performSelector afterDelay',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5563319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com