2011-10-29 45 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。