Я работал в к a EXC_BAD_ACCESS
при освобождении объекта, который имеет немногих performSelector:withObject:afterDelay
где селекторные методы называют другой объект, и я выпускаю объект.
Где-нибудь в моем классе я звоню:
[self performSelector:@selector(callObject1Function) withObject:nil afterDelay:2.0];
и в моем классе я имею:
- (void)callObject1Function{
[object1 function1] // Here I am getting "EXC_BAD_ACCESS"
}
- (void)dealloc {
[object1 release];
[super dealloc];
}
Я просто не понимаю, что думал когда Вы dealloc
это объект, все связанное с объектом должно быть удалено или отменено, даже performSelector
с задержкой!
Использование NSObject
:
-cancelPreviousPerformRequestsWithTarget:selector:object:
, чтобы отменить любые ожидающие выделения.