就这么简单。
狮跑。
- 我刚刚升级到4.4的XCode
- 装我最近的XCode 4.3项目文件
- 的代码注释一个@synthesize线
- 和错误比比皆是。 :(
验证编译器设置为“LLVM 4.0”。
然后,我做了同样的测试,但在Xcode 4.4,瞧创建了一个新的项目! 汽车4.4项目中@synthesize工作。
汽车@synthesize 也似乎对添加到代码中的新特性的工作。 但是,现有的旧产生错误。
任何人遇到此? 任何其他事情,我应该检查?
我真正想要的自动生成功能工作。
谢谢。
错误是不是你申报财产,但在你使用它的方式方法。
自动合成的属性来创建一个备份存储了默认下划线领先 。
所以,在你的代码,当你有一个属性声明如下:
@property (nonatomic, strong) UILabel *sectorLabel;
你自动sythesize - 这样的事情正在自动生成编译器为您提供:
@synthesize sectorLabel = _sectorLabel;
现在,你可以通过属性访问:
self.sectorLabel;
或者,你可以直接访问后备存储:
_sectorLabel;
解决它!
所以这就是我所做的。
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似乎已经变得更加严格了。
与接受答案的问题是,您只需通过添加self.property改变你的代码的行为。
访问伊娃与财产是两码事。 正确的答案是改变的代码通过添加下划线正确使用伊娃。
这不是严格的有关更改默认属性综合化的Xcode的。 此外,在多数风格指南,你会读,苹果阻止_ivar的名字,所以我想这就是窗外。
在我的代码我只用自我。 当我打算通过属性getter和setter访问。 不改变我现有的代码针对此行为的浪费时间。