如何将可变字符串正确发送到NSTextField?

时间:2010-04-23 03:05:07

标签: objective-c xcode label nstextfield nsmutablestring

所以我已经调试了所有这些代码,似乎没问题。我做了一个可变的字符串,由于某种原因我不能让它显示在我的标签上。调试器说

“2010-04-22 22:50:26.126 Fibonacci [24836:10b] *** - [NSTextField setString:]:无法识别的选择器发送到实例0x130150”

这有什么问题?当我把字符串发送到NSLog时,它很好。

这是我的所有代码,任何帮助将不胜感激。 “elementNum”是一个comboBox,“display”是一个Label。 感谢

 #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


`

1 个答案:

答案 0 :(得分: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,"]创建它,它将返回一个自动释放的对象,并在同一消息中初始化它。