如果應用程序在前臺收到通知,並試圖顯示使用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