如果应用程序在前台收到通知,并试图显示使用Toast的横幅。在显示远程通知期间应用程序崩溃
简单的情况下工作正常,没有出现任何问题..
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UIView *parentView = [UIApplication sharedApplication].keyWindow.rootViewController.view;
[parentView makeToast:@"toast"];
}
但是当我试图表明我自己的自定义视图,我上showToast
方法不好EXC_BAD_ACCESS
错误:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UIView *bannerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.topController.view.frame.size.width, 80)];
UIView *parentView = [UIApplication sharedApplication].keyWindow.rootViewController.view;
bannerView.backgroundColor = [UIColor redColor];
[parentView showToast: bannerView duration:3.0 position:CSToastPositionTop completion:nil];
}
是- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
方法是编程这种类型的行为的危险地点?有一个强烈的参考parentView似乎并没有工作,我怎样才能确定哪个对象越来越过分?
当你调用'showToast'时,是否有'parentView' nil?顺便说一句,你为什么试图获得'rootViewController'?你不应该得到当前可见的控制器吗? – Alex
我不认为父视图是零,第一个例子也会失败,对吧?我的根视图是一个导航控制器,所以我认为它的安全? –
'makeToast'工作而不是'showToast'在哪里得到不好的访问? – Alex