0

使用 iAd。很少收到警告。下面是我在 AppDelegate.m 中的代码

什么不见​​了?

警告以代码行结尾表示

-(void)onEnter
{
    [super onEnter]; //<-- NSObject may not respond to this
    adView = [[ADBannerView alloc]initWithFrame:CGRectZero];
    adView.delegate = self;
    adView.requiredContentSizeIdentifiers = [NSSet setWithObjects: ADBannerContentSizeIdentifierLandscape, ADBannerContentSizeIdentifierLandscape, nil];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
    [[[CCDirector sharedDirector] openGLView] addSubview:adView];
    adView.hidden = YES;
}


-(void)onExit
{
    adView.delegate = nil;
    [adView removeFromSuperview];
    [adView release];
    adView = nil;
    [super onExit]; //<-- NSObject may not respond to this
}



-(void)bannerViewActionDidFinish :(ADBannerView *)banner
    {    
        NSLog(@"bannerViewActionDidFinish called");
        [[UIApplication sharedApplication] setStatusBarOrientation :(UIInterfaceOrientation)[[CCDirector sharedDirector] deviceOrientation]];
    }
//<-- Instance method deviceOrientation not found (return type defaults to id)

怎么了?缺少要继承的任何类?

4

3 回答 3

1

您需要继承自CCNode,而不是NSObject

编辑此外,deviceOrientation不是成员,CCDirector那么您为什么假设它是成员?

于 2012-07-04T14:00:08.927 回答
1

onEnter 和 onExit 方法仅在从 CCNode 派生的类中可用。你的类是 NSObject 的子类。

如果您手动发送 onEnter/onExit 消息,只需删除对 super onXXX 的调用,因为它是多余的。

于 2012-07-04T14:01:26.167 回答
0

出现警告是因为您正在调用的方法(可能在您的超类中实现)在@implementation您的@interface. 只需在您的超类.h文件中声明它们。

- (UIDeviceOrientation)deviceOrientation;
- (void)onExit;
- (void)onEnter;

如果您不希望它们公开可见,请在.m您知道它们存在的子类文件的类别中声明它们。

于 2012-07-04T13:35:58.497 回答