Мое приложение разбилось, и это должно быть из-за UIAlertController.
Эта проблема возникает только в iOS 8.x, где доступен UIAlertController. Странный факт заключается в том, что мое приложение не использует UIAlertViewController или UIAlertView.
Отчеты говорят мне:
Trying to dismiss UIAlertController <UIAlertController: 0x172c5d80> with unknown presenter.
Как это может случиться?
Я думал о
- Отменить систему AlertView, отображаемую благодаря жесту встряхивания
- WebView освобожден, когда приглашение или общий диалог все еще находятся на экране
- Предупреждение о низком уровне заряда аккумулятора
но ни один из этих случаев не приведет меня к сбою.
Что мне сообщает журнал сбоев, так это то, что ОС показывает AlertView, который будет прикреплен к моему окну приложения, а в некоторых случаях потеряет родительский контроллер представления, который представил UIAlertViewController.
Любые идеи, как найти проблему?
Здесь трассировка стека
_________________________________
0 CoreFoundation 0x2bc0c45f __exceptionPreprocess + 127
1 libobjc.A.dylib 0x39c79c8b objc_exception_throw + 36
2 CoreFoundation 0x2bc0c3a5 +[NSException raise:format:] + 110
3 UIKit 0x2f4ad13d -[UIAlertController _dismissAnimated:triggeringAction:triggeredByPopoverDimmingView:] + 414
4 UIKit 0x2f4acf97 -[UIAlertController _dismissAnimated:triggeringAction:] + 28
5 UIKit 0x2f590a0b -[_UIAlertControllerActionView touchesEnded:withEvent:] + 160
6 UIKit 0x2f159567 -[UIWindow _sendTouchesForEvent:] + 520
7 UIKit 0x2f152e31 -[UIWindow sendEvent:] + 542
8 UIKit 0x2f129759 -[UIApplication sendEvent:] + 194
9 UIKit 0x2f39d2f9 _UIApplicationHandleEventFromQueueEvent + 14166
10 UIKit 0x2f1281a9 _UIApplicationHandleEventQueue + 1350
11 CoreFoundation 0x2bbd2fbf __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 12
12 CoreFoundation 0x2bbd23cf __CFRunLoopDoSources0 + 216
13 CoreFoundation 0x2bbd0a35 __CFRunLoopRun + 770
14 CoreFoundation 0x2bb1e3b1 CFRunLoopRunSpecific + 474
15 CoreFoundation 0x2bb1e1c3 CFRunLoopRunInMode + 104
16 GraphicsServices 0x3308d201 GSEventRunModal + 134
17 UIKit 0x2f18843d UIApplicationMain + 1438
18 MyApp 0x00028a07 main (main.mm:16)
ИЗМЕНИТЬ
отверстия спросили о моей инициализации окна. Здесь код моего AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[MyAppCustomWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
_mainViewController = [[MyAppContainerViewController alloc] initWithNibName:nil bundle:nil];
_mainStatusBarVC = [[MyAppStatusBarVC alloc] initWithRootVC:_mainViewController];
[self.window setRootViewController:_mainStatusBarVC];
[self.window makeKeyAndVisible];
return YES;
}