我在我的应用程序委托使用一个单独的类试过,但我一直没能得到那个工作。 我也检查了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.
一切都是正确导入。 如果有什么事我应该张贴让我知道。
试着改变你的单身创建到这一点:
+ (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?