取消在递归

时间:2016-02-12 11:44:47

标签: ios repeat performselector

我正在使用此代码重复一个函数

- (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];

}

1 个答案:

答案 0 :(得分:0)

请首先,检查一下你可能在创建和取消的不同运行循环中运行。我在过去遇到过这个问题。

我认为不需要再次编写选择器。恰到好处,试试吧。

有了这个

// cancel the above call (and any others on self)
[NSObject cancelPreviousPerformRequestsWithTarget:self];

参考苹果文件。

NSObject_Class

  

讨论取消具有相同目标的所有执行请求   as aTarget,参数为anArgument,selector为aSelector。这个   方法仅在当前运行循环中删除执行请求,而不是全部   运行循环。