【问题标题】:Why does xcode think I have not completed implementation?为什么 xcode 认为我还没有完成实现?
【发布时间】:2013-09-02 08:53:42
【问题描述】:

可能是一个容易解决的问题,但我是新手,所以谢谢 只是想了解如何使用 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

我的.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;
    }
}

...继续基本添加横幅广告代码的其余部分 感谢您提前提供帮助

【问题讨论】:

  • 发布你的头文件。
  • 你已经声明你的类要实现某个协议,但还没有实现该协议所需的所有方法。
  • 刚刚发布了头文件
  • @NicholasHart 我太新了,我不知道这意味着什么
  • 你能发布完整的头文件吗?我没有看到@end,所以我认为它会继续,并且可能还有其他方法。至于 ADBannerViewDelegate 它的所有方法都是可选的,所以应该不是问题。问题可能出在您的其他方法中。

标签: iphone objective-c xcode xcode4


【解决方案1】:

从@implementation 行的末尾删除分号(;),这样它就是

@implementation withadViewController

还要确保每个 @interface@implementation 都有一个匹配的 @end 以关闭块。

@interface

... your code...

@end

类似

@implementation

... your code ...

@end

更新:

删除

{
ADBannerView *banner;
BOOL bannerIsVisible;
}

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

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

- (void)bannerViewDidLoadAd:(ADBannerView *)banner

- (void)bannerViewDidLoadAd:(ADBannerView *)bannerView

并在该方法的代码中引用bannerView 而不是banner。对于使用名为 banner 的局部变量的其他方法,您也必须这样做。

【讨论】:

  • 我试过了,但现在它说横幅的本地声明隐藏了实例变量
【解决方案2】:

问题是你声明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;
}

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

【讨论】:

  • 在.h文件中添加方法并且没有在.m文件中声明以及没有实现所需的委托方法时会弹出不完整的实现。
  • 您也不需要两次声明相同的变量...尝试仅在界面内删除两个变量(ADBannerView *banner; BOOL bannerIsVisible)...
  • 看起来对问题没有任何影响。同样的问题依然存在
  • 我看到你的另一个帖子,我看到你有两个方法..calulate 和 clear...这些方法是否正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 2015-07-14
相关资源
最近更新 更多