Как решить эту проблему? ВыполнитьВыбрать: сОбъект: после_Даждения: проблема? - PullRequest
2 голосов
/ 25 февраля 2010

У меня есть контроллер представления, который вызывает executeSelector: withObject: afterDelay. Однако если я удалю этот контроллер представления сразу после вызова этого, мое приложение вылетает, как только система пытается выполнить отложенный селектор на этом (удаленном) контроллере представления.

Теперь, как мне это сделать? Мне нужно , чтобы избавиться от контроллера представления для экономии памяти, поэтому нет никакого способа позволить ему зависать.

Есть ли способ отменить селектор с отложенным исполнением перед его выполнением?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2010

Я предлагаю использовать NSTimer вместо этого. Вы можете просто invalidate таймер, чтобы убедиться, что он никогда не будет вызван после того, как UIViewController ушел. Хороший момент для invalidate таймера, например, в viewWillDisappear:.

Это означает, что таймер принадлежит контроллеру вида. Но в любом случае это хороший дизайн.

1 голос
/ 25 февраля 2010

Вы не можете выполнить селектор на удаленном объекте, вам нужно либо поместить объект вокруг себя, либо выполнить работу с другим меньшим объектом, который может висеть вокруг вас.

Для отмены существует метод cancelPreviousPerformRequestsWithTarget: selector: object: или cancelPreviousPerformRequestsWithTarget: .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...