2011-10-29 54 views
0

我有一个文本标签声明:的NSTextField无法识别的选择

@property (weak) IBOutlet NSTextField *label; 

我设置awakeFromNib方法的一些属性:

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

而且它所有的作品。 但是,当我试图改变字符串值(用setStringValue以及)其他地方的代码,我收到此错误:

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

我注意到它的工作方式也与像是否隐藏方法,setHidden 任何想法为什么?

+0

如果你NSLog(@“%@”,self.label);你看到了什么? – jrturton

+0

IBOutlets应保留:@property(nonatomic,retain)IBOutlet NSTextField *标签; – Julien

+1

Ios或OSX?奥特莱斯由iOS保留,不被OSX保留。 PLease添加正确的标签。 – zaph

回答

0

错误消息告诉您,您正在将setStringValue:消息发送给NSString对象,而不是NSTextField对象。你的awakeFromNib代码是好的,但你的代码来改变标签的字符串是错误的。

1

您需要了解如何阅读错误消息。您被告知“setStringValue:”已被“发送”到NSString/CFString对象。这意味着“label”中的指针不是NSTextField,而是NSString。最有可能的是,在你的程序的某个点上,当你打算做setStringValue或者其他的时候,你分配一个NSString来“标记”。否则,由于“标签”不被保留,存储器被回收并用于NSString。

相关问题