【问题标题】:suggestions on how i can resolve this "Semantic Issue" error关于如何解决此“语义问题”错误的建议
【发布时间】:2013-07-13 17:25:34
【问题描述】:

我一直在尝试将 iAD 实现到我的一个视图控制器中,并且在为 .h 和 .m 文件编写代码之后......我收到了这个语义问题错误:

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

我特别在 .m 文件的 @implementation 旁边得到了这个错误。非常感谢任何有关我如何解决此问题的建议。

ALSO我想知道是否可以将此广告横幅(一旦工作)从该视图控制器复制并粘贴到其他视图控制器而不重新编码?

这是我在 .h 文件中的 iAD 代码

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

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

@end

这是我在 .m 文件中的 iAD 代码

#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? weak只能和ARC一起使用(iOS上没有垃圾回收)
  • @Matthias Bauch 是的,这听起来很傻,但我该怎么做呢?并请解释您的报价
  • Xcode 的 Edit -> Refactor 菜单中有一个“Convert to Objective-C ARC”菜单项。但在这样做之前,您应该先了解一下 ARC,这可能会导致您现有代码出现问题。如果您想坚持使用手动发布模型,请将 weak 替换为 assign
  • 或者你可以用assign代替weak
  • @MATTHIAS BAUCH 好吧,在阅读您的回复之前,我实际上只是快速阅读了自动引用计数 (ARC),所以我明白……但是,如果我坚持手动发布模型并用 assign 替换 weak ...我收到信号 SIGABRT

标签: ios xcode error-handling xcode4 iad


【解决方案1】:

您可以通过点击 Refactor 和 Convert to Objective-C ARC 去编辑来启用 ARC。

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2021-09-23
    • 2021-09-03
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多