2011-10-29 20 views
0

NSTextField認識されていないセレクタ

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

そしてすべての作品:

@property (weak) IBOutlet NSTextField *label; 

私はawakeFromNibメソッドでいくつかの属性を設定します。どこか別の しかし、私は(同様setStringValueで)文字列値を変更しようとするコードで、私はこのエラーが表示されます。

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

私はそれがすべてのアイデアisHidden、setHidden のような方法でも同じように動作気づきましたどうして?

+0

あなたがNSLog(@ "%@"、self.label); – jrturton

+0

IBOutletは保持する必要があります:@property(非原子、保持)IBOutlet NSTextField * label; – Julien

+1

IosまたはOSX?アウトレットはiOSによって保持され、OSXによって保持されません。正しいタグを追加してください。 – zaph

答えて

0

NSTextFieldオブジェクトではなくNSStringオブジェクトにメッセージsetStringValue:を送信しているというエラーメッセージが表示されます。 awakeFromNibコードは問題ありませんが、ラベルの文字列を変更するコードは間違っています。

1

エラーメッセージの表示方法を学ぶ必要があります。あなたは "setStringValue:"がNSString/CFStringオブジェクトに "送られた"と言われています。これは、 "label"のポインタがNSTextFieldではなく、代わりにNSStringであることを意味します。ほとんどの場合、あなたのプログラムのいくつかの前のポイントで、setStringValueやそのようなことをするときにNSStringを "label"に割り当てました。または、「ラベル」が保持されていないため、記憶域が再利用され、NSStringに使用されました。

関連する問題