Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSTextField无法识别的选择器_Objective C_Cocoa_Nstextfield - Fatal编程技术网

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保留。请添加正确的标签。