我在全新安装的 Mountain Lion 上使用 Xcode 4.5。编译器是 LLVM4.1,我的项目使用的是 ARC。(我过去曾涉足 Xcode,但有一段时间没有接触过它)。
我的问题:
我知道在较新版本的 Xcode 中不再需要包含 @synthesize 指令(果然,当我从 .xib 中的 UI 组件 ctrl-drag 到 .h 文件时,不会在其中创建指令.m 文件),但没有它们我无法访问这些属性,而是得到“未知接收器 xxx”错误。
简单的例子:
我创建了一个带有标签 ('myLabel') 和按钮 ('myButton') 的 Single View iPhone 项目。我 ctrl 从 ViewController.xib 中的 UILabel 拖到 ViewController.h 以创建以下属性:
@property (strong, nonatomic) IBOutlet UILabel *myLabel;
我也通过拖放创建了按钮操作。
在 .m 文件中,我在 myButton 方法中编写了以下代码:
- (IBAction)myButton:(id)sender {
NSLog(@"The label text is %@", [myLabel text]);
}
结果:
这给了我一个编译时错误(“未知接收者 myLabel”)。
我仍然可以使用下划线(即 [_myLabel 文本])或添加“@synthesize myLabel;”来访问我的属性。手动在 .m 文件的顶部,但我认为我不需要这样做,或者应该为我完成。谁能解释我在代码中做错了什么(或者如果这是由于我需要调整的某些设置?)
谢谢
ps 我注意到我的 .m 文件现在在顶部也有自己的 @interface 块(大概是为了声明私有变量?)