Я создаю версию Release Xcode 7.0. Нет раскадровки, просто файлы nib.
У меня есть один UINavigationController
, созданный делегатом приложения и инициализирующий его с помощью контроллера вида.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *viewController = [[TGMainViewController alloc] initWithNibName:nil bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.hidden = YES;
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
После перехода к новому представлению с помощью:
TGRoutePreparationViewController *viewController = [[TGRoutePreparationViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];
Затем вернемся, используя:
[self.navigationController popViewControllerAnimated:YES];
Я получаю следующую ошибку:
Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UIAlertController: 0x7b29a600>)
Пока я использую UIAlertController
в приложении, ни один из них не используется или не создается, прежде чем получать эту ошибку. Это происходит только при работе под iOS 9.0. Запуск под iOS 8.4 не вызывает ошибок. Во всех случаях приложение работает нормально, и навигация работает.
Я подозреваю, что ошибка вводит в заблуждение, но как я могу это исправить?
Per @Nick, здесь используется метод dealloc:
- (void)deregisterNotificationHandlers {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)dealloc {
[self deregisterNotificationHandlers];
}