我有一个文本标签声明为:
@property (weak) IBOutlet NSTextField *label;
我在awakeFromNib方法中设置了一些属性:
- (void)awakeFromNib {
[label setStringValue:@"hello"];
}
这一切都有效。 但是当我尝试在代码中的其他位置更改字符串值(也使用 setStringValue)时,我收到此错误:
-[__NSCFString setStringValue:]: unrecognized selector sent to instance 0x105703040
我注意到它与 isHidden、setHidden 等方法的行为方式相同 知道为什么吗?
最佳答案
您需要学习如何阅读错误消息。您被告知“setStringValue:”已“发送”到 NSString/CFString 对象。这意味着“label”中的指针不是 NSTextField,而是 NSString。最有可能的是,在程序中的某个先前点,当您打算执行 setStringValue 或类似操作时,您将 NSString 分配给“label”。否则,由于“label”未被保留,因此存储空间被回收,然后用于 NSString。
关于objective-c - NSTextField 无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938750/