0

したがって、デバッグしたこのコードはすべてあり、問題ないようです。変更可能な文字列を作成しましたが、何らかの理由でラベルに表示できません。デバッガーは言う

「2010-04-22 22:50:26.126 Fibonacci[24836:10b] *** -[NSTextField setString:]: 認識されないセレクターがインスタンス 0x130150 に送信されました」

これの何が問題なのですか?文字列を NSLog に送信すると、問題なく出力されます。

ここに私のコードがすべてあります。助けていただければ幸いです。「elementNum」はコンボボックス、「display」はラベルです。ありがとう

 #import "Controller.h"

@implementation Controller

- (IBAction)computeNumber:(id)sender {
 int x = 1;
 int y = 1;
 NSMutableString *numbers = [[NSMutableString alloc] init];
 [numbers setString:@"1, 1,"];
 int num = [[elementNum objectValueOfSelectedItem]intValue];
 int count = 1;
 while (count<=num) {
  int z = y;
  y+=x;
  x=z;
  [numbers appendString:[NSString stringWithFormat:@" %d,", y]];
  count++;
 }
 [display setString:numbers];
 NSLog(numbers);
}
@end


`
4

1 に答える 1

2

表示されるエラー メッセージを見てください。

-[NSTextField setString:]: unrecognized selector sent to instance 0x130150"

これはあなたに何かを伝えています。具体的には、それにはメソッドNSTextFieldがなく、-setString:それを呼び出そうとすると失敗します。

これは、 のドキュメントを参照するための合図ですNSTextField。そうすると、文字列値を設定するメソッドがないことがわかります。ただし、ドキュメントには、メソッドを持つNSTextFieldから継承することも示されています。NSControl-setStringValue:

-setStringValue:そのため、 の値を設定するには を呼び出す必要がありますNSTextField

[display setStringValue:numbers];

numbers現在のコードでは、文字列オブジェクトがリークしていることに注意してください。を使用して作成した-allocため、リリースする責任があります。

代わりに[NSMutableString stringWithString:@"1, 1,"]、自動解放されたオブジェクトを返す を使用して作成し、同じメッセージで初期化する必要があります。

于 2010-04-23T03:58:31.413 に答える