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!
Use NSObject
's:
-cancelPreviousPerformRequestsWithTarget:selector:object:
to cancel any pending perform selectors.