Xcode 4.4自动@Synthesize在Xcode 4.3项目上失败
-
13-12-2019 - |
题
它和那么简单。
运行狮子。
- 我刚升级到xcode 4.4
- 加载了我最近的Xcode 4.3项目文件
- 注明了一个@synthesize代码行
- 和错误比比皆是。:( 验证编译器设置为“LLVM 4.0”。
然后我做了相同的测试,但在Xcode 4.4和Voila中创建了一个新项目!自动@synthesize在4.4项目中工作。
自动@synthesize 也似乎在 new 属性上添加到代码中。但是现有的旧版本生成错误。
其他人体验这个吗? 我应该检查的任何其他事情?
我真的希望自动生成功能工作。
谢谢。
解决方案
错误不是您声明属性的方式,但在您使用它的方式中。
自动合成属性通过默认创建带有的备份商店。
所以在您的代码中,您有一个属性声明为:
@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编译并工作得很好,无需具有“自我”。关键词。但Xcode 4.4似乎已经对它变得更加严格。
答案所接受的问题是您刚刚通过添加self.property更改了代码的行为。
访问IVAR与属性有两个不同的东西。正确的答案是通过添加下划线来更改代码来正确使用ivar。
这不是严格的关于Xcode的默认属性综合化的变化。此外,在大多数样式指南中,您将阅读苹果劝阻_IVAR名称,以便我猜这是窗口。
在我的代码中我只使用self。当我打算通过Property Getter和Setter访问时。没有改变我的现有代码,为此行为浪费时间。
不隶属于 StackOverflow