延迟执行取消方法
-
(void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;
-
(void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;
主要适用场景目前可能是防止短时间内频繁操作
举例说明
- 如果需要被取消的方法是携带参数的,那延迟执行和取消延迟执行两个参数必须一致,取消延迟执行才会成功
- (IBAction)test:(id)sender {
[[self class] cancelPreviousPerformRequestsWithTarget:**self** selector: @selector(delayTest:) object:sender];
[self performSelector: @selector(delayTest:) withObject:sender afterDelay:0.5];
}
- (void)delayTest:(id)sender
{
NSLog(@"%s", __FUNCTION__);
}
- 如果参数不是必要需求则可以用另外一个方法取消延迟执行
- (IBAction)test:(id)sender {
[[self class] cancelPreviousPerformRequestsWithTarget:self];
[self performSelector: @selector(delayTest:) withObject:sender afterDelay:0.5];
}
- (void)delayTest:(id)sender
{
NSLog(@"%s", __FUNCTION__);
}