Jacob
Jacob

Reputation: 1459

How to stop performing selector?

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

Answers (3)

titaniumdecoy
titaniumdecoy

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

NSGod
NSGod

Reputation: 22948

It's not immediately obvious, but I believe the following should work:

[NSObject cancelPreviousPerformRequestsWithTarget:self];

Upvotes: 1

jtbandes
jtbandes

Reputation: 118731

[NSObject cancelPreviousPerformRequestsWithTarget:self];
// or
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(vibe) object:nil];

Upvotes: 7

Related Questions