Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I remove all performSelector:withObject:afterDelay:?

I ran in to a EXC_BAD_ACCESS when deallocating an object that has few performSelector: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 the performSelector with delay!

like image 547
Unis Avatar asked Jan 21 '10 04:01

Unis


1 Answers

Use NSObject's:

-cancelPreviousPerformRequestsWithTarget:selector:object: 

to cancel any pending perform selectors.

like image 53
Ben Gottlieb Avatar answered Sep 29 '22 04:09

Ben Gottlieb