我对Objective-C还是陌生的,因此我很难过。在我的AppController中,当用户单击我的应用程序中的一个广告,然后关闭广告并返回到我的应用程序时,我想销毁并重新创建广告(关于原因的详细说明)。但是由于某种原因,我的代码无法正常工作。没有错误或警告,但是它没有达到我的预期目的。这是我的代码如下所示:#import "MoPubManager.h"
......
- (void)applicationWillEnterForeground:(UIApplication *)application
{
MoPubManager *obj = [[MoPubManager alloc] init];
if( obj.adView ) {
[[MoPubManager sharedManager] destroyBanner];
}
[obj.adView refreshAd];
}
_adView,销毁横幅广告和刷新广告都在MoPubManager文件中,因此您可以看到我导入了文件并将MoPubManager转换为对象。 (obj.adView最初只是MoPubManager.h中的_adView,但为了避免警告,我不得不将其切换到obj.adView。)我可能只是使用了错误的调用,因此我会将MoPubManager.mm文件发布到调用最初所在的位置但整整两页
最佳答案
在该行中:
MoPubManager *obj = [[MoPubManager alloc] init];
您正在创建MoPubManager类的新实例。
接下来,您要检查该新实例化的类的adView属性是否不为nil。除非在MoPubManager的init方法中填充adView,否则它将始终为nil,因此不会调用destroyBanner方法。
但是,在sharedManager上调用destroyBanner方法...指示正在使用单例模式。因此,您不应创建新实例,因为这与使用单例的原因背道而驰。 (使用单例时,您只有一个类的实例-请参见this for more info)
在没有看到更多代码的情况下,您似乎应该调用类似以下内容的代码:
if( [MoPubManager sharedManager].adView ) {
[[MoPubManager sharedManager] destroyBanner];
}
[[MoPubManager sharedManager].adView refreshAd];
关于objective-c - iOS:从另一个文件导入调用时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9763657/