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
您是否尝试启用ARC? '弱'只能用于ARC(iOS上没有垃圾回收) –
@Matthias Bauch是的,这听起来很愚蠢,但我该怎么做?并请解释你的报价 – user2459150
在Xcode的Edit - > Refactor菜单中有一个“Convert to Objective-C ARC”菜单项。但是在做这件事之前,你应该教育自己关于ARC,这可能会导致你现有的代码出现问题。如果你想坚持手动发布模型,用'assign'替换'weak'。 –