我在集成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]时,系统会保留它,导致您可以使用其他视图控制器来做到这一点(您不能!)
祝好运。