NSTextField无法识别的选择器

时间:2011-10-29 11:56:42

标签: objective-c cocoa nstextfield

我有一个文本标签声明为:

@property (weak) IBOutlet NSTextField *label;

我在awakeFromNib方法中设置了一些属性:

- (void)awakeFromNib {
    [label setStringValue:@"hello"];
}

一切正常。 但是,当我尝试在代码中的其他位置更改字符串值(使用setStringValue)时,我收到此错误:

  

- [__ NSCFString setStringValue:]:无法识别的选择器发送到实例0x105703040

我注意到它与isHidden,setHidden等方法的行为方式相同 知道为什么吗?

2 个答案:

答案 0 :(得分:1)

您需要了解如何阅读错误消息。你被告知“setStringValue:”被“发送”到NSString / CFString对象。这意味着“label”中的指针不是NSTextField,而是NSString。最有可能的是,在您的程序中的某个先前点,当您打算执行setStringValue或其他操作时,您已将NSString分配给“标签”。或者,由于未保留“label”,因此回收存储,然后将其用于NSString。

答案 1 :(得分:0)

错误消息告诉您正在向setStringValue:对象发送NSString消息,而不是NSTextField对象。您的awakeFromNib代码很好,但更改标签字符串的代码是错误的。