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 回答