如何取消多个延迟的performSelector调用

Fab*_*uer 9 cocoa-touch objective-c ios

我必须在限制中停止呼叫.

NSTimeInterval delay = 2;
for (NSString* sentence in sentences) {
   [sentenceHandler performSelector:@selector(parseSentence:)
                         withObject:sentence
                         afterDelay:delay];
   delay += 2;
}

如何从上面停止这个电话?我试过了:

[NSObject cancelPreviousPerformRequestsWithTarget:sentenceHandler 
    selector:@selector(parseSentence) object:nil];
Run Code Online (Sandbox Code Playgroud)

但没有效果?它是否只退出循环中的多个调用之一?

Fre*_*eer 13

你有两个选择.您可以使用这将删除所有排队的调用parseSentence::

[NSObject cancelPreviousPerformRequestsWithTarget:sentenceHandler];
Run Code Online (Sandbox Code Playgroud)

或者你可以单独删除每一个(注意方法之后的冒号":" parseSentence):

[NSObject cancelPreviousPerformRequestsWithTarget:sentenceHandler
                                         selector:@selector(parseSentence:)
                                           object:sentence];
Run Code Online (Sandbox Code Playgroud)