问题
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.
来源:https://stackoverflow.com/questions/3971195/iphone-cancelperformselectorwithtarget-not-working