cancelPreviousPerformRequestsWithTarget:selector:object:
是 Objective-C 中的一个方法,用于取消之前通过 performSelector:withObject:afterDelay:
或 performSelector:withObject:afterDelay:inModes:
安排的执行请求。这个方法属于 NSObject
类,可以在任何 Objective-C 对象上调用。
当你调用 performSelector:withObject:afterDelay:
方法时,系统会在指定的延迟时间后,在当前线程的运行循环中执行指定的选择器(selector)。如果在这之前你再次调用 cancelPreviousPerformRequestsWithTarget:selector:object:
方法,并且提供了相同的 target、selector 和 object 参数,那么之前的执行请求就会被取消。
performSelector:withObject:afterDelay:
时,系统会创建一个定时器,该定时器在指定的延迟时间后触发。cancelPreviousPerformRequestsWithTarget:selector:object:
时,系统会查找之前存储的执行请求信息,如果找到匹配的请求,则取消对应的定时器,从而阻止选择器的执行。// 定义一个方法,稍后将通过 performSelector 调用
- (void)doSomething {
NSLog(@"Doing something...");
}
// 安排 doSomething 方法在 5 秒后执行
[self performSelector:@selector(doSomething) withObject:nil afterDelay:5];
// 如果需要取消之前的执行请求
[cancelPreviousPerformRequestsWithTarget:self selector:@selector(doSomething) object:nil];
cancelPreviousPerformRequestsWithTarget:selector:object:
时,target 对象仍然存在且未被释放,否则可能会导致崩溃。通过这种方式,你可以有效地管理延迟执行的操作,提高应用程序的响应性和性能。
领取专属 10元无门槛券
手把手带您无忧上云