2013-07-15 21 views
0

我一直在试图将iAD实现到我的一个视图控制器中,并且在为.h和.m文件编写代码之后....我得到了这个语义问题错误:关于如何解决这个“语义问题”错误的建议

@synthesize of 'weak' property is only allowed in ARC or GC mode 

我专门让旁边的.m文件的@implementation此错误。任何关于如何解决这个问题的建议都非常感谢。

还有我想知道是否可以将此adbanner(一旦它的工作)从此viewcontroller复制并粘贴到其他视图控制器而无需重新编码?

这是.h文件内我的代码的iAD

#import <UIKit/UIKit.h> 
#import <iAd/iAd.h> 

@interface ViewController : UIViewController <ADBannerViewDelegate> 
@property (weak, nonatomic) IBOutlet ADBannerView *banner; 

@end 

这是.m文件

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
self.banner.delegate = self; 
} 

- (void) viewDidLayoutSubviews { 
if (self.banner.bannerLoaded) { 
    CGRect contentFrame = self.view.bounds; 
    CGRect bannerFrame = self.banner.frame; 
    contentFrame.size.height -= self.banner.frame.size.height; 
    bannerFrame.origin.y = contentFrame.size.height; 
    self.banner.frame = bannerFrame; 
} 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication: (BOOL)willLeave 
{ 
NSLog(@"bannerViewActionShouldBegin"); 
return YES; 
} 

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
NSLog(@"bannerViewDidLoadAd"); 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
NSLog(@"didFailToReceiveAdWithError"); 
} 

- (void)bannerViewActionDidFinish:(ADBannerView *)banner { 
NSLog(@"bannerViewActionDidFinish"); 
} 

@end 
+0

您是否尝试启用ARC? '弱'只能用于ARC(iOS上没有垃圾回收) –

+0

@Matthias Bauch是的,这听起来很愚蠢,但我该怎么做?并请解释你的报价 – user2459150

+1

在Xcode的Edit - > Refactor菜单中有一个“Convert to Objective-C ARC”菜单项。但是在做这件事之前,你应该教育自己关于ARC,这可能会导致你现有的代码出现问题。如果你想坚持手动发布模型,用'assign'替换'weak'。 –

回答

1

您可以启用ARC通过去内我的代码的iAD编辑按重构并转换为Objective-C ARC。

相关问题