iPhone - cancelPerformSelectorWithTarget not worki

2020-07-22 20:13发布

问题:

If I do this in a subclass of UIView:

[self performSelector:@selector(doSomething) withObject:nil afterDelay:5];

Then cancel it like this (I've tried both versions):

 [[NSRunLoop currentRunLoop] cancelPerformSelectorsWithTarget:self];
 //[[NSRunLoop mainRunLoop] cancelPerformSelectorsWithTarget:self];

The "doSomething" method still gets called. What am I doing wrong?

回答1:

In the NSObject class reference:

cancelPreviousPerformRequestsWithTarget:selector:object:

Cancels perform requests previously registered with performSelector:withObject:afterDelay:.

Use:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doSomething) object:nil];

Hope this helps.