Зная, когда -viewWillAppear сработал, но -viewWillDisappear не имеет - PullRequest
1 голос
/ 11 августа 2010

Есть ли способ узнать, что контроллер представления находится где-то в жизненном цикле контроллера представления между -viewWillAppear и -viewWillDisappear?

Я спрашиваю, потому что хочу быть чертовски уверенным, что метод несрабатывает, когда мое изображение либо не отображается на экране, либо исчезает с экрана.Когда представление собирается исчезнуть с экрана, некоторые объекты, которые я не могу явно проверить во время выполнения, могут или не могут быть освобождены, поэтому, очевидно, взаимодействие с ними может привести к message sent to deallocated instance ошибкам.

В настоящее времяЯ отслеживаю с BOOL, вот так:

- (void)viewWillAppear:(BOOL)animated {
    isOnScreen = YES;
    [super viewWillAppear:animated];
}

- (void)willWillDisappear:(BOOL)animated {
    isOnScreen = NO;
    [super viewWillAppear:animated];
}

И мой метод выглядит так:

if (isOnScreen) [self doSomething];

Есть ли более простой способ сделать это?

Ответы [ 2 ]

1 голос
/ 11 августа 2010

ваш путь кажется самым простым, если не самым надежным.(просто проверка, существует ли этот экземпляр представления, кажется правильным подходом (если он еще не был отменен)).

Я также ДЕЙСТВИТЕЛЬНО не понимаю цель этого, если только у вас нет другого запущенного метода контроллера представления, относящегося к контроллеру представления, показывающему, что вы используете логическое значение для.В этом случае это скорее проблема проектирования, чем проблема содержания.

0 голосов
/ 11 августа 2010

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

- (void)viewDidDisappear:(BOOL)animated {
    // Do stuff that has to be done when this view is off screen.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...