views:

52

answers:

1

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  A: 

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.

Evan Mulawski