objective-c - NSTextField 无法识别的选择器

标签 objective-c cocoa nstextfield

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

@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/

相关文章:

objective-c - 如何在 NSTextField (Cocoa) 中单击鼠标右键来禁用上下文菜单?

macos - 从 NSTextField 获取值

ios - iOS MapBox 可以在.mbtiles 中使用矩形离线 map 吗?

macos - 我应该在 Mac 应用程序上使用 Growl 吗?

objective-c - NSView Controller 位于 NSWindow Controller 内部吗?

macos - NSTextField sizeToFit 或框架更新将文本向左移动

iphone - 从网站到 iPhone 应用程序的内容

iphone - 一个View中可以放置多少个UITableView?

ios - 更改约束目标类

cocoa - 将 NSTextField 绑定(bind)到 NSNumber