【问题标题】:Cancel perform selector method in recursion取消递归执行选择器方法
【发布时间】:2016-02-12 11:44:47
【问题描述】:

我正在使用此代码一次又一次地重复一个功能

- (void)refresh {
[self performSelector:@selector(refresh) withObject:nil afterDelay:5.0];
}

viewWillDisappear 上,我编写了代码来取消它,但仍然调用了函数。我们如何取消这个执行选择器重复自己?

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];    
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(refresh) object:nil];

}

【问题讨论】:

    标签: ios repeat performselector


    【解决方案1】:

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

    我认为没有必要再次编写选择器。就这样试试吧。

    有了这个

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

    参考苹果文档。

    NSObject_Class

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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多