Как я могу удалить все performSelector: withObject: afterDelay:?

Я перешел к 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 с задержкой!! Может кто-то объяснить, спасибо.....

Ответы

Ответ 1

Используйте NSObject 's:

-cancelPreviousPerformRequestsWithTarget:selector:object: 

чтобы отменить все отложенные селектора.

Ответ 2

Я использовал следующий код в моих приложениях, и он работает.

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(MethodName) object:nil];

Спасибо, Hemang.