我的应用在启动时发送请求,并在成功时通过MTStatusBarOverlay
向用户显示简短消息。不幸的是,我目前的实现似乎与iOS 9的视图生命周期范例相悖。我收到了消息
应用程序窗口应在应用程序启动结束时具有根视图控制器
并且应用程序崩溃了。该应用程序适用于iOS 7& 8。
通过在线搜索,在为应用程序UIWindow
建立根视图控制器之前尝试将消息视图添加到视图层次结构时,似乎可能会出现这种情况,但这似乎不是案例见下文。
以下是UIApplicationDelegate
实施的摘录:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[...]
self.window.rootViewController = [[MyViewController alloc] init];
[...]
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[MyDataManager sendRequestWithCompletion:^{
// Displays a message with MTStatusBarOverlay
[self showSuccessOverlay];
}];
}
在application:didFinishLaunchingWithOptions:
之前调用 applicationDidBecomeActive:
,因此似乎永远不会出现rootViewController
被建立的问题。
为什么会这样? iOS 9有什么不同导致应用程序崩溃?
答案 0 :(得分:0)
MTStatusBarOverlay
是UIWindow
的子类,因此在应用启动期间实例化一个会将UIWindow
添加到iOS在启动完成时检查已填充的rootViewController
的列表中。 / p>
我能够通过在使用叠加层之前实例化并指定一个虚拟控制器来解决这个问题,如下所示:
[MTStatusBarOverlay sharedInstance].rootViewController = [UIViewController new];
[[MTStatusBarOverlay sharedInstance] postMessage:@"Message"];