接口变量声明:合成和未知选择器

时间:2012-07-22 10:50:05

标签: objective-c

我遇到了一个令人困惑的问题。我只是深入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。

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

0 个答案:

没有答案