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

Я работал в к 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 с задержкой!

16
задан Cœur 1 August 2019 в 04:30
поделиться

1 ответ

Использование NSObject :

-cancelPreviousPerformRequestsWithTarget:selector:object: 

, чтобы отменить любые ожидающие выделения.

28
ответ дан 30 November 2019 в 15:35
поделиться