的XCode 4.4自动@synthesize失败的一个Xcode 4.3项目(XCode 4.4

2019-07-30 16:18发布

就这么简单。

狮跑。

  1. 我刚刚升级到4.4的XCode
  2. 装我最近的XCode 4.3项目文件
  3. 的代码注释一个@synthesize线
  4. 和错误比比皆是。 :(

验证编译器设置为“LLVM 4.0”。

然后,我做了同样的测试,但在Xcode 4.4,瞧创建了一个新的项目! 汽车4.4项目中@synthesize工作。

汽车@synthesize 似乎对添加到代码中的新特性的工作。 但是,现有的旧产生错误。

任何人遇到此? 任何其他事情,我应该检查?

我真正想要的自动生成功能工作。

谢谢。

Answer 1:

错误是不是你申报财产,但在你使用它的方式方法。

自动合成的属性来创建一个备份存储了默认下划线领先

所以,在你的代码,当你有一个属性声明如下:

@property (nonatomic, strong) UILabel *sectorLabel;

你自动sythesize - 这样的事情正在自动生成编译器为您提供:

@synthesize sectorLabel = _sectorLabel;

现在,你可以通过属性访问:

self.sectorLabel;

或者,你可以直接访问后备存储:

_sectorLabel;


Answer 2:

解决它!

所以这就是我所做的。

ViewController.h

@interface ViewController : UIViewController
// Public:

@property (nonatomic, strong) UILabel *sectorLabel;

@end

ViewController.m

@implementation ViewController

//@synthesize sectorLabel;

然后这个错误弹出。

ViewController.m:48:2:未声明的标识符 'sectorLabel' 的使用; 您的意思是“_sectorLabel”?

它解决了我改变了代码的时刻:

self.sectorLabel

的XCode 4.3编译和运行良好,而不需要具有“自我”。 关键词。 但是4.4的XCode似乎已经变得更加严格了。



Answer 3:

与接受答案的问题是,您只需通过添加self.property改变你的代码的行为。

访问伊娃与财产是两码事。 正确的答案是改变的代码通过添加下划线正确使用伊娃。

这不是严格的有关更改默认属性综合化的Xcode的。 此外,在多数风格指南,你会读,苹果阻止_ivar的名字,所以我想这就是窗外。

在我的代码我只用自我。 当我打算通过属性getter和setter访问。 不改变我现有的代码针对此行为的浪费时间。



文章来源: XCode 4.4 Auto @Synthesize failing on an XCode 4.3 Project