Как справиться с ситуацией, когда страница выгружается из-за нехватки памяти - PullRequest
0 голосов
/ 02 октября 2011
//In App Delegate
UserProfileTableViewController *uptvc = [[UserProfileTableViewController alloc]init];
UITabBarItem *tempTabBarItem4 = [[UITabBarItem alloc]initWithTitle:@"Fans" image:nil tag:FANSTAB_INDEX];

//I am setting the user id information here directly in app delegate
uptvc.userId = [[UserStockInfo sharedUserStockInfo]getUserId];
UINavigationController *navconUptvc = [[UINavigationController alloc]initWithRootViewController:uptvc];

Проблема возникает, когда мой UserProfileTableViewController выгружается из-за нехватки памяти (возможно, из-за использования функции камеры в моем приложении). Страница не сможет загружаться должным образом, так как ей не хватает информации 'userId', передаваемой делегатом приложения (как показано выше). Я не могу установить эту информацию userId непосредственно в UserProfileTableViewController (в соответствии с методом загрузки), так как другие страницы могут передавать другой идентификатор пользователя при загрузке страницы в стек.

Любой совет, как я могу решить эту проблему?

1 Ответ

2 голосов
/ 02 октября 2011

Во-первых, вы должны хранить свой объект UserProfileTableViewController в иваре делегата приложения (поскольку вы его размещаете там). Во-вторых, делегат приложения должен предоставить этот идентификатор пользователя контроллеру. В-третьих, если навигационный контроллер удален из интерфейса / освобожден, то даже при недостатке памяти ваш uptvc также не должен быть освобожден. Контроллеры представлений поддерживают полную иерархию контроллеров, даже когда не хватает памяти, удаляются только представления и все, что вы им скажете удалить.

Вы, безусловно, хотите, чтобы UINavigationController также содержался в иваре AppDelegate.

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