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

@property (weak) IBOutlet NSTextField *label;


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

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


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


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


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

最佳答案

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

关于objective-c - NSTextField无法识别的选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7938750/

10-11 03:07