Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa touch IAD仍然拒绝工作_Cocoa Touch_Iad - Fatal编程技术网

Cocoa touch IAD仍然拒绝工作

Cocoa touch IAD仍然拒绝工作,cocoa-touch,iad,Cocoa Touch,Iad,编辑:这是我的AppDelegate(它的一部分) 我就要放弃了。就在过去的几天里,我尝试了5种不同的方法,让一个iAd准确地显示出来,就像苹果公司所说的那样简单,几乎100%的时间我要么没有看到广告,要么出现错误。我严格遵循了苹果的文档。 我唯一的线索就是这两行 GameViewController *gameViewController = [[GameViewController alloc]init]; NSLog(@"NSLOG %@", [[gameViewContr

编辑:这是我的AppDelegate(它的一部分)

我就要放弃了。就在过去的几天里,我尝试了5种不同的方法,让一个iAd准确地显示出来,就像苹果公司所说的那样简单,几乎100%的时间我要么没有看到广告,要么出现错误。我严格遵循了苹果的文档。

我唯一的线索就是这两行

    GameViewController *gameViewController = [[GameViewController alloc]init];
    NSLog(@"NSLOG %@", [[gameViewController view]class]);
在我的应用程序代理中。NSLog为我提供了“UIView”。不,为什么?为什么它会是UIView,它应该是SKView,因为GameViewController是apple为sprite工具包为我预先编写的。那怎么可能给我错误的目标呢

我收到了
'NSInvalidArgumentException',原因:'-[UIView场景]:未识别的选择器发送到实例0x174191780'
,其他人建议通过放入
原始内容
语句来修复该选择器,但我已经有了它,并且它不起作用

横幅视图控制器:

#import "BannerViewController.h"

NSString * const BannerViewActionWillBegin = @"BannerViewActionWillBegin";
NSString * const BannerViewActionDidFinish = @"BannerViewActionDidFinish";

@interface BannerViewController () <ADBannerViewDelegate>

@end

@implementation BannerViewController {
    ADBannerView *_bannerView;
    UIViewController *_contentController;
}

-(instancetype)initWithContentViewController:(UIViewController *)contentController{
    NSAssert(contentController != nil, @"Attempting to initialize a BannerViewController with a nil contentController.");

    self = [super init];
    if (self != nil) {
        _bannerView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
        _contentController = contentController;
        _bannerView.delegate = self;
    }
    return self;
}
-(void)loadView{
    UIView *contentView = [[UIView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

//Have also tried SKView *contentView = [[SKView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

    [contentView addSubview:_bannerView];
    [self addChildViewController:_contentController];
    [contentView addSubview:_contentController.view];
    [_contentController didMoveToParentViewController:self];

    self.view = contentView;
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return [_contentController preferredInterfaceOrientationForPresentation];
}
-(NSUInteger)supportedInterfaceOrientations{
    return [_contentController supportedInterfaceOrientations];
}
-(void)viewDidLayoutSubviews{
    CGRect contentFrame = self.view.bounds, bannerFrame = CGRectZero;

    bannerFrame.size = [_bannerView sizeThatFits:contentFrame.size];

    if(_bannerView.bannerLoaded){
        contentFrame.size.height -= bannerFrame.size.height;
        bannerFrame.origin.y = contentFrame.size.height;

    }else{
        bannerFrame.origin.y = contentFrame.size.height;
    }

    _contentController.view.frame = contentFrame;
    _bannerView.frame = bannerFrame;
}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
    [UIView animateWithDuration:0.25 animations:^{
        [self.view setNeedsLayout];
        [self.view layoutIfNeeded];
    }];
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    [UIView animateWithDuration:0.25 animations:^{
        [self.view setNeedsLayout];
        [self.view layoutIfNeeded];
    }];
}
-(BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{
    [[NSNotificationCenter defaultCenter]postNotificationName:BannerViewActionWillBegin object:self];
    return YES;
}
-(void)bannerViewActionDidFinish:(ADBannerView *)banner{
    [[NSNotificationCenter defaultCenter]postNotificationName:BannerViewActionDidFinish object:self];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@interface GameViewController ()
@property (nonatomic, strong) IBOutlet UIView *contentView;

@end

@implementation GameViewController {

}
-(instancetype)init{
    self = [super init];
    if (self) {

    }
    return self;
}
-(void)viewDidLoad{
    //self.canDisplayBannerAds = YES;
    [super viewDidLoad];
}
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
}
-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
}
-(void)viewDidLayoutSubviews{
}
-(void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    SKView *skView = (SKView*)self.originalContentView;
    if (!skView.scene) {
        SKScene *scene = [GameScene sceneWithSize:skView.bounds.size];

        [skView presentScene:scene];
        //skView.showsPhysics = YES;


    }

}

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return UIInterfaceOrientationMaskPortrait;
    } else {
        return UIInterfaceOrientationMaskAll;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

我想出来了。答案,正如我所想的那样,是难以置信的简单和令人难以置信的,苹果公司不会在他们的文档中添加某种警告,但是再一次,也许我只是一个过犹不及的人,我们应该知道这类事情

答案是,
init
从未在
GameViewController
中调用,而是调用了
initWithCoder:
。一旦我记录了
init
方法,发现它没有被调用,我就明白了这一点

@interface GameViewController ()
@property (nonatomic, strong) IBOutlet UIView *contentView;

@end

@implementation GameViewController {

}
-(instancetype)init{
    self = [super init];
    if (self) {

    }
    return self;
}
-(void)viewDidLoad{
    //self.canDisplayBannerAds = YES;
    [super viewDidLoad];
}
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
}
-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
}
-(void)viewDidLayoutSubviews{
}
-(void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    SKView *skView = (SKView*)self.originalContentView;
    if (!skView.scene) {
        SKScene *scene = [GameScene sceneWithSize:skView.bounds.size];

        [skView presentScene:scene];
        //skView.showsPhysics = YES;


    }

}

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return UIInterfaceOrientationMaskPortrait;
    } else {
        return UIInterfaceOrientationMaskAll;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}