我遇到了一个令人困惑的问题。我只是深入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。
我的问题是,为什么在我的情况下我必须在界面中声明它才能工作?