我在集成Greystripe广告时遇到了一些问题(已记录为here,但并不重要)。解决问题的一种方法是仅显示我的gameView

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


基本上,这只是将我的gameView添加到当前视图控制器之上。

现在,从这个视图中,我想显示另一个模态视图

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


问题是,当显示此视图时,我的gameView会取消分配。含义是,当我致电以撤消AdView时,它会取消分配,但是会保留在屏幕上,因为底层的GameView不再存在。

有没有更好的方法来调用这些视图? (我无法通过将其显示为模式视图来调用我的gameView)。
还是一种防止gameView释放的方法?

最佳答案

如果我不得不猜测,您没有一个强大的变量来保留要取消分配的类。创建该类的人都应该具有强大的ivar。当我尝试创建一个对象并使用它而不保留它时,我遇到了完全相同的问题。请注意,对于UIAlerts,当您调用[alert show]时,系统会保留它,导致您可以使用其他视图控制器来做到这一点(您不能!)

祝好运。

10-07 18:38