我有一个令人困惑的问题。我对Objective-C的理解只有脚踝,所以我会尽力解释。我有一个类,它是一个控制器,它简单地声明一个位于 nib 文件中的 NSTextField。
这是它在接口文件中的声明:
@property (nonatomic, retain) IBOutlet NSTextField *textField;
并在实施中:
@synthesize textField;
简单吧?但是,如果我[textField stringValue]
稍后通过单击提交按钮来调用它,那么它会失败并显示一个未知的选择器消息(如果它认为它不能在该对象类型上调用该消息,则通常是这样)。这看起来像这样:
-(IBAction)send:(id)sender {
NSString* txt = [textField stringValue];
[server send:txt];
}
为了解决这个问题,我做了以下事情:
@interface MyController : NSObject {
NSTextField *textField;
}
我还没有看到任何显示这一点的教程/示例。他们没有在界面的这一部分声明 NSTextField 就这样做了。
我的问题是,为什么在我的情况下我必须在界面中声明它才能工作?