快速了解这里发生的事情。

我有一个GameScene和一个GameOverUIController。游戏结束时,它将加载GameOverUIController,后者将加载xib,后者将加载MobFoxBannerView。

这是问题所在:如果您快速按下“再次播放”按钮或播放一轮超过大约3分钟的时间,则广告会在后台加载,但实际上无处可去,并且会崩溃。

我接受 friend 的建议,添加了ViewDidUnload以将bannerview设置为nil,但是它仍然崩溃...我不是最令人惊讶的程序员,但是我觉得我在某个地方犯了最愚蠢的错误...任何帮助非常感谢。我只是在这里使用错误的语法吗?

我做了以下事情。

我在GameOverUI实现上合成了bannerView。

在将UIwebview直接添加到GameOverUIController的xib接口(interface)构建器之前,现在将其手动添加到 View 中

self.bannerView = [[[MobFoxBannerView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)] autorelease];
bannerView.delegate = self;

[self.view addSubview:bannerView];
[self.view bringSubviewToFront:bannerView];

那就是我的主要实现方式。因此,每次加载GameOver屏幕时,它都会请求一个新添加。

然后,在头文件中设置值。
-(NSString *) publisherIdForMobFoxBannerView:(MobFoxBannerView *)banner;

@property (nonatomic, retain) MobFoxBannerView *bannerView;

并在GameOverUIController.m的底部设置我的发布者ID
- (NSString *)publisherIdForMobFoxBannerView:(MobFoxBannerView *)banner
{
return @"xxxxxxxxxxxx";
}

然后...仍然崩溃,因此我尝试将其设置为nil希望能起作用...但是我不确定语法...

在GameOverUIController.m上
- (void)viewDidUnload
{

[super viewDidUnload];

self.bannerView = nil;
// or ? bannerView.delegate = nil;
}

这些线中的任何一种都行得通.....我完全不知所措。除非我能在周末结束之前弄清楚这一点,否则将转到另一个广告平台。我现在存在的祸根。任何帮助将不胜感激。非常感谢你

编辑:

弄清楚了...
与ViewUnload无关。
- (void)dealloc
{
bannerView.delegate = nil;
[super dealloc];

}

正在将其添加到错误的位置...现在可以正常运行。

最佳答案

我想你的问题出在

bannerView.delegate = self;

加载add时添加
  • (例如,由于互联网状况不佳,它可能非常慢)-调用了委托(delegate)方法,但释放了“自我”-因此引发了运行时异常。

  • 顺便说一下,我对MobFox框架一无所知。这只是一个常见的反模式。

    关于objective-c - MobFox iOS框架在卸载XIB时崩溃...我在这里做错了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8454028/

    10-12 04:10