我正在全新安装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块(可能是为了声明私有变量?)
答案 0 :(得分:4)
自动ivars以下划线为前缀,以区别于属性名称。因此,您需要使用_myLabel
。如果您不喜欢默认前缀,则可以使用@synthesize