0

Greystripe広告の統合にいくつか問題があります(ここに記載されていますが、重要ではありません)。私のgameViewをこのように提示するだけで問題を回避する方法

iSlideAppDelegate *appDelegate = (iSlideAppDelegate *)[[UIApplication sharedApplication] delegate];
            UIStoryboard *storyboard = self.storyboard;
            Game3ViewController *gameView = (Game3ViewController *)[storyboard instantiateViewControllerWithIdentifier:@"mainGameController"];
            [appDelegate.window addSubview:gameView.view];

これは基本的に、現在のViewControllerの上にgameViewを追加するだけです。

このビューから、このような別のモーダルビューを表示したいと思います

FullScreenSelfAdViewController *adView = [[FullScreenSelfAdViewController alloc] initWithNibName:@"FullScreenSelfAdViewController" bundle:nil];
        [adView setDismissDelegate:self];
        [self presentModalViewController:adView animated:YES];

問題は、このビューが表示されると、gameViewの割り当てが解除されることです。つまり、AdViewを閉じるために呼び出した場合、それはdeallocですが、基になるgameViewがもう存在しないため、画面に表示されたままになります。

これらのビューを呼び出すためのより良い方法はありますか?(モーダルビューとして表示してgameViewを呼び出すことはできません)。または、gameViewの割り当てを解除しないようにする方法はありますか?

4

1 に答える 1

2

私が推測しなければならなかった場合、解放されるクラスを保持する強力な変数はありません。そのクラスを作成する人は誰でも、そうする強力な ivar を持っている必要があります。オブジェクトを作成し、それを保持せずに使用しようとしたときに、まったく同じ問題が発生しました。UIAlerts の場合、[alert show] を呼び出したときにシステムがそれを保持することに注意してください。これにより、他のビュー コントローラーでこれを行うことができると考えられます (これはできません!)。

幸運を。

于 2012-07-14T15:48:51.640 に答える