Ответ 1
Используйте NSObject
's:
-cancelPreviousPerformRequestsWithTarget:selector:object:
чтобы отменить все отложенные селектора.
Я перешел к 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
's:
-cancelPreviousPerformRequestsWithTarget:selector:object:
чтобы отменить все отложенные селектора.
Я использовал следующий код в моих приложениях, и он работает.
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(MethodName) object:nil];
Спасибо, Hemang.