Objective c NSTextField无法识别的选择器
我有一个文本标签声明为:Objective c NSTextField无法识别的选择器,objective-c,cocoa,nstextfield,Objective C,Cocoa,Nstextfield,我有一个文本标签声明为: @property (weak) IBOutlet NSTextField *label; 我在awakeFromNib方法中设置了一些属性: - (void)awakeFromNib { [label setStringValue:@"hello"]; } 这一切都很有效。 但是,当我尝试在代码中的其他地方更改字符串值(也使用setStringValue)时,我收到以下错误: -[\uu NSCFString setStringValue:]:发送到实例0
@property (weak) IBOutlet NSTextField *label;
我在awakeFromNib方法中设置了一些属性:
- (void)awakeFromNib {
[label setStringValue:@"hello"];
}
这一切都很有效。
但是,当我尝试在代码中的其他地方更改字符串值(也使用setStringValue)时,我收到以下错误:
-[\uu NSCFString setStringValue:]:发送到实例0x105703040的选择器无法识别
我注意到它的行为方式与isHidden、setHidden等方法相同
知道原因吗?错误消息告诉您正在将
setStringValue:
消息发送到NSString
对象,而不是NSTextField
对象。您的awakeFromNib
代码没有问题,但更改标签字符串的代码是错误的。您需要学习如何读取错误消息。您被告知“setStringValue:”已“发送”到NSString/CFString对象。这意味着“label”中的指针不是NSTextField,而是NSString。最有可能的情况是,在程序中的某个前一点,当您打算执行setString值或类似操作时,您将NSString分配给了“label”。或者,由于没有保留“label”,存储被回收,然后用于NSString。如果您使用NSLog(@“%@”,self.label);,您会看到什么;?IBOutlets应保留:@property(非原子,保留)IBOutlets NSTextField*标签;Ios还是OSX?插座由iOS保留,而不是由OSX保留。请添加正确的标签。