我有一个GLKViewController子类实现,ADBannerView作为子视图。广告加载和渲染就好了。 OpenGL应用程序也可以正常工作。单击广告时,将显示弹出窗口。 GLKViewController启用了默认的暂停暂停行为。
如果你在GLKViewController的setPaused上设置一个断点,你会注意到 setPaused:NO会在你离开你的应用程序时被调用(双击主页并选择另一个应用程序)广告弹出窗口可见。仅当ADBannerView弹出窗口可见时才会出现此行为,否则,如果您从应用程序切换,则不会发生此行为。
即使是iOS 9.1中由Xcode 7生成的默认OpenGL模板应用程序,我也可以重现上述行为。
1)这是正常的吗?
2)对我来说,这会导致一致的可重现崩溃,因为在setPaused:NO被调用之后,GLKViewController被重绘,导致在应用程序处于后台时发生OpenGL操作。该应用程序(正确)在此时被杀死。
答案 0 :(得分:1)
我目前的解决方法是在应用程序未处于活动状态时放弃对setPaused:NO
的调用,如下所示。这似乎工作正常,但为什么这种情况发生的事情让我感到困惑。
- (void)setPaused:(BOOL)paused
{
long appState = (long)[UIApplication sharedApplication].applicationState;
if (!paused && (appState != 0)) {
NSLog(@"setPaused - REJECTING Unpause; %ld", appState);
return;
}
[super setPaused:paused];
}