NSTextField无法识别的选择器 [英] NSTextField unrecognized selectors

查看:317
本文介绍了NSTextField无法识别的选择器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a text label declared as:

@property (weak) IBOutlet NSTextField *label;

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

I set some attributes in awakeFromNib method:

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


但是当我尝试改变字符串值(与setStringValue以及)在代码中的其他地方我收到这个错误:

And it all works. But when I try to change the string value (with setStringValue as well) somewhere else in the code I receive this error:


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

-[__NSCFString setStringValue:]: unrecognized selector sent to instance 0x105703040

我注意到它的行为方式也像isHidden, setHidden
任何想法为什么?

I noticed it behaves the same way also with methods like isHidden, setHidden Any idea why?

推荐答案

您需要了解如何阅读错误消息。你被告知setStringValue:被发送到一个NSString / CFString对象。这意味着label中的指针不是NSTextField,而是NSString。最可能的是,在程序中的某个先前点,当您想要执行setStringValue或某些操作时,您将NSString指定为label。否则,由于不保留label,存储被回收,然后用于NSString。

You need to learn how to read the error messages. You're being told that "setStringValue:" was "sent" to an NSString/CFString object. This means that the pointer in "label" is not an NSTextField but is instead an NSString. Most likely, at some prior point in your program, you assigned an NSString to "label" when you meant to do setStringValue or some such. Or else, since "label" isn't retained, the storage was reclaimed and then used for an NSString.

这篇关于NSTextField无法识别的选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆