How can I remove all performSelector:withObject:afterDelay:?
11,100
Solution 1
Use NSObject
's:
-cancelPreviousPerformRequestsWithTarget:selector:object:
to cancel any pending perform selectors.
Solution 2
I have used following code in my all apps and it's working.
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(MethodName) object:nil];
Thanks, Hemang.
Author by
Unis
Updated on June 21, 2022Comments
-
Unis about 2 years
I ran in to a
EXC_BAD_ACCESS
when deallocating an object that has fewperformSelector:withObject:afterDelay
where the selector methods is calling another object and I am releasing the object.Somewhere in my class I am calling:
[self performSelector:@selector(callObject1Function) withObject:nil afterDelay:2.0];
and in my class I have:
- (void)callObject1Function{ [object1 function1] // Here I am getting "EXC_BAD_ACCESS" } - (void)dealloc { [object1 release]; [super dealloc]; }
I just don't understand I thought when you
dealloc
it the object, everything associated with the object should be removed or canceled, even theperformSelector
with delay! -
Bogatyr almost 14 yearsAlso just NSObject's +cancelPreviousPerformRequestsWithTarget: if you want to eliminate all selector and object perform requests to that target without specifying selectors and objects