У меня "управление памятью по сравнению с пользовательским опытом" или просто глупый вопрос.Давайте представим приложение на основе UITabBarController
с двумя вкладками.Пока пользователь находится на 1-й вкладке, в память поступает предупреждение, а контроллер представления 2-й вкладки обрабатывает didReceiveMemoryWarning
.Предположим также, что на 2-й вкладке есть контроллер push-представления.Вопросы:
- Можно ли вручную вставлять ВК во 2-ю вкладку с
popViewControllerAnimated:
при выдаче предупреждения о памяти? - Считается ли это плохим UX или плохой идеей mem-mgmt?Я думаю, что пользователь может быть удивлен тем, что он / она увидит после переключения на 2-ю вкладку, но если я не открою этот ВК, пользователь увидит просто пустой экран.Если пользователь нажмет «Назад», вторая вкладка VC все равно перезагрузится (перезапустите жизненный цикл с
viewDidLoad:
, и это лучше, чем приложение, которое будет убито iOS).
Единственный недостаток, который я вижу вВышеупомянутый подход, когда мой толкнул VC также подтолкнул некоторые VC.Тогда код усложнил бы ... и если бы было что-то еще, это усложнило бы дальнейшее, оставив мне трудно поддерживать код спагетти, подобный этому:
- (void)didReceiveMemoryWarning {
UIViewController *pushedController = [self.navigationController visibleViewController];
if ([pushedController isKindOfClass:[MyController class]]) {
// POP
[self.navigationController popViewControllerAnimated:NO];
} else {
// MyController pushed something
UIViewController *innerController = [pushedController.navigationController visibleViewController];
if ([innerController isKindOfClass:[MyOtherController class]]) {
[innerController.navigationController popViewControllerAnimated:NO];
// Final POP
[self.navigationController popViewControllerAnimated:NO];
}
}
[super didReceiveMemoryWarning];
}
Какой ваш подход / совет?Может быть, уже есть простой подход к этому, и я упустил это из виду?