我有一个文本标签声明为:
@property (weak) IBOutlet NSTextField *label;
我在awakeFromNib方法中设置了一些属性:
- (void)awakeFromNib {
[label setStringValue:@"hello"];
}
一切正常。 但是,当我尝试在代码中的其他位置更改字符串值(使用setStringValue)时,我收到此错误:
- [__ NSCFString setStringValue:]:无法识别的选择器发送到实例0x105703040
我注意到它与isHidden,setHidden等方法的行为方式相同 知道为什么吗?
答案 0 :(得分:1)
您需要了解如何阅读错误消息。你被告知“setStringValue:”被“发送”到NSString / CFString对象。这意味着“label”中的指针不是NSTextField,而是NSString。最有可能的是,在您的程序中的某个先前点,当您打算执行setStringValue或其他操作时,您已将NSString分配给“标签”。或者,由于未保留“label”,因此回收存储,然后将其用于NSString。
答案 1 :(得分:0)
错误消息告诉您正在向setStringValue:
对象发送NSString
消息,而不是NSTextField
对象。您的awakeFromNib
代码很好,但更改标签字符串的代码是错误的。