我正在使用此代码重复一个函数
- (void)refresh {
[self performSelector:@selector(refresh) withObject:nil afterDelay:5.0];
}
On viewWillDisappear
我写了代码来取消这个,但仍然调用了函数。我们如何取消这个执行选择器重复自己?
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(refresh) object:nil];
}
答案 0 :(得分:0)
请首先,检查一下你可能在创建和取消的不同运行循环中运行。我在过去遇到过这个问题。
或
我认为不需要再次编写选择器。恰到好处,试试吧。
有了这个
// cancel the above call (and any others on self)
[NSObject cancelPreviousPerformRequestsWithTarget:self];
参考苹果文件。
讨论取消具有相同目标的所有执行请求 as aTarget,参数为anArgument,selector为aSelector。这个 方法仅在当前运行循环中删除执行请求,而不是全部 运行循环。