为什么xcode认为我还没有完成实现?

时间:2013-08-29 19:06:11

标签: iphone objective-c xcode xcode4

可能是一个容易解决的问题,但我是新手,所以谢谢你 只是想了解如何使用iAd并将其放入

我的.h

#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@interface withadViewController : UIViewController <ADBannerViewDelegate>
{
ADBannerView *banner;
BOOL bannerIsVisible;
}
@property (nonatomic, assign)BOOL bannerIsVisible;
@property (nonatomic, retain)IBOutlet ADBannerView *banner;
@end

my.m

@implementation withadViewController;                        **incomplete implementation**
@synthesize banner;
@synthesize bannerIsVisible;

-(void) bannerViewDidLoadAd:(ADBannerView *)banner 
{
    if (!self.bannerIsVisible) 
    {
        [UIView beginAnimations:@"animatedAdBannerOn" context:NULL];
        banner.frame = CGRectOffset(banner.frame, 0.0, 50.0);
        [UIView commitAnimations];
        self.bannerIsVisible = YES;
    }
}

...继续使用其他基本添加横幅广告代码 感谢您提前帮助

2 个答案:

答案 0 :(得分:3)

从@implementation行的末尾删除分号(;),使其为

@implementation withadViewController

另外,请确保每个@end@interface都匹配@implementation以关闭该块。

@interface

... your code...

@end

和类似的

@implementation

... your code ...

@end

<强>更新

删除

{
ADBannerView *banner;
BOOL bannerIsVisible;
}

因为@property声明已经创建了实例变量来支持属性。 另外,请确保您没有在代码中本地创建另一个名为banner的变量。

编译器抱怨是因为你有一个名为banner的实例变量和一个名为-bannerViewDidLoadAd:的{​​{1}}内的变量,所以在该方法中它不知道你引用了哪个变量当你引用banner时。所以为了安全起见,改变

banner

- (void)bannerViewDidLoadAd:(ADBannerView *)banner

并在该方法的代码中引用- (void)bannerViewDidLoadAd:(ADBannerView *)bannerView 而不是bannerView。对于使用名为banner的局部变量的其他方法,您必须这样做。

答案 1 :(得分:0)

问题是您声明ADBannerView

的方式
@interface withadViewController : UIViewController <ADBannerViewDelegate>
{
//problem is here .. you might need to add IBOutlet, if you have used interface builder
ADBannerView *banner;
BOOL bannerIsVisible;
}

我认为它应该像是

@interface withadViewController : UIViewController <ADBannerViewDelegate>
{
//you forget to add IBOutlet in front of ADBannerView
IBOutlet ADBannerView *banner;
BOOL bannerIsVisible;
}

我希望它有效......祝你好运