Xcode 4.5似乎仍然期待@synthesize - 否则无法访问属性

时间:2012-11-04 08:55:29

标签: xcode xib xcode4.5 synthesize

我正在全新安装Mountain Lion上使用Xcode 4.5。编译器是LLVM4.1,我的项目使用ARC。 (我过去曾涉足Xcode,但暂时没有触及它。)

我的问题:

据我所知,在较新版本的Xcode中,不再需要包含@synthesize指令(当然,当我从.xib中的UI组件拖动到.h文件时,指令不会在.m文件中创建),但没有它们我无法访问这些属性,而是得到“未知的接收器xxx”错误。

简单示例:

我创建了一个带有标签('myLabel')和一个按钮('myButton')的单视图iPhone项目。我从ViewController.xib中的UILabel拖动到ViewController.h来创建以下属性:

@property (strong, nonatomic) IBOutlet UILabel *myLabel;

我也通过拖放创建了按钮动作

在.m文件中,我在myButton方法中编写了以下代码:

- (IBAction)myButton:(id)sender {
  NSLog(@"The label text is %@", [myLabel text]);
}

结果:

这给了我编译时错误(“Unknown receiver myLabel”)。

我仍然可以使用下划线(即[_myLabel text])或添加“@synthesize myLabel”来访问我的属性。手动在.m文件的顶部,但我认为我不需要这样做,或者它应该为我完成。任何人都可以解释我在代码中做错了什么(或者如果这是由于某些设置我需要调整?)

由于

P.S。我注意到我的.m文件现在在顶部也有自己的@interface块(可能是为了声明私有变量?)

1 个答案:

答案 0 :(得分:4)

自动ivars以下划线为前缀,以区别于属性名称。因此,您需要使用_myLabel。如果您不喜欢默认前缀,则可以使用@synthesize

更改属性的ivar名称