0

我有一个令人困惑的问题。我对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 就这样做了。

我的问题是,为什么在我的情况下我必须在界面中声明它才能工作?

4

0 回答 0