如何使iAd的横幅的一个共享实例全国各地的许多视图控制器?(How to make a single

2019-09-21 02:30发布

我在我的应用程序委托使用一个单独的类试过,但我一直没能得到那个工作。 我也检查了iAdSuite例子(特别是containerBanner例子,因为它似乎是最相关的),但我无法弄清楚。 如果有更好的方法来做到这一点,而无需使用单独的类,你可以点我在正确的方向我会很感激。 我的一些单身类代码如下。 谢谢!

@interface App Delegate

@property (assign) iAdController *iadc;
+ (AppDelegate*) sharedApplication;
- (iAdController*)sharedAd;
@end

@implementation AppDelegate

@synthesize iadc;

+ (AppDelegate*) sharedApplication
{
return [[UIApplication sharedApplication] delegate];
}

-(iAdController*)sharedAd
{
    if(iadc==nil){
        iadc=[iAdController new];
    }
    return iadc;
}


@interface ViewController

iAdController*iadc=[[AppDelegate sharedApplication] sharedAd];
//here i get an error saying, "initializer element is not a compile-time constant.

一切都是正确导入。 如果有什么事我应该张贴让我知道。

Answer 1:

试着改变你的单身创建到这一点:

+ (LocationManagerSingleton*)sharedInstance {

    static LocationManagerSingleton *_sharedInstance;
    if(!_sharedInstance) {
        static dispatch_once_t oncePredicate;
        dispatch_once(&oncePredicate, ^{
            _sharedInstance = [[super allocWithZone:nil] init];
        });
    }

    return _sharedInstance;
}



+ (id)allocWithZone:(NSZone *)zone {    

    return [self sharedInstance];
}


- (id)copyWithZone:(NSZone *)zone {
    return self;    
}

- (id)init
{
    self = [super init];
    if (self != nil) 
    {
        // PERFORM any custom initialization here
    }
    return self;
}

显然,改变类的名称。

当你想用你的单身您的任何viewcontrollers的只是这样称呼它:

locationManager = [LocationManagerSingleton sharedInstance];

不要忘记添加

+ (LocationManagerSingleton*) sharedInstance;

在标题。

编辑

以及它似乎我误解了你的密码(忘记我的答案,你只是希望能够从任何地方访问你的iAdController。所以才到位

添加视图控制器的.M内

@interface ViewController()
{
    iAdController *iadc; 
}

而且里面的

-(void)viewDidLoad
{
    iadc=[[AppDelegate sharedApplication] sharedAd];
}

但进口的要在使用它为准视图 - 控制应用程序delegate.h。

#import "AppDelegate.h" 

也有不应该是在@interface在AppDelegate中的空间



文章来源: How to make a single shared instance of iAd banner throughout many view controllers?