Reputation: 1459
Im trying to figure out how to stop performing a selector
I can start one by doing this
[self performSelector:@selector(vibe)];
But im trying to figure out how i can stop one.
Any help would be very much appreciated..Thanks!
Upvotes: 5
Views: 4182
Reputation: 19251
The performSelector:
method is equivalent to sending a selector message directly to the receiver, so it cannot be canceled. I.e., these two lines have the same effect:
[self performSelector:@selector(vibe)];
[self vibe];
The cancelPreviousPerformRequestsWithTarget:
(and similar) methods can only cancel selector messages which are not performed immediately. You can send such a message via the performSelector:withObject:afterDelay:
(and similar) methods.
See Table 3-2 of the Run Loop Management section of Apple's Thread Programming Guide for more information.
Upvotes: 9
Reputation: 22948
It's not immediately obvious, but I believe the following should work:
[NSObject cancelPreviousPerformRequestsWithTarget:self];
Upvotes: 1
Reputation: 118731
[NSObject cancelPreviousPerformRequestsWithTarget:self];
// or
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(vibe) object:nil];
Upvotes: 7