1

好吧,正如标题所说,我正在尝试创建一个老式的学校类型的应用程序。我的意思是计算机编程为绿色,黑色,文本(编程)(如终端/Windows程序输入),我试图让我的字符串一次显示在屏幕上一个字母。所以我决定尝试一个例子,这是我的代码,任何建议都会很棒!:)

    instructionsArray = [[NSMutableArray alloc] initWithObjects: nil];
    instructionsString = @"Lorem ipsum dolor sit er elit lamet, ...";

  for (int i = 1 ; i <= [instructionsString length]; i++) {
    [instructionsArray addObject:@"%@", [NSString stringWithFormat:[instructionsString characterAtIndex:i]]];
}

所以基本上我有这个示例字符串;instructionsString(它只是一个 NSString)和这个 MutableArray。我认为将字符串转换为字符到数组中最简单,然后使用 NSTimer,显示数组的每个项目,任何更简单更好的方法都将不胜感激!

谢谢

编辑:谢谢 Hypercube 我将代码更改为:

            [Instructions.text stringByAppendingString:[remainingBuffer subStringWithRange: NSmakeRange(1, remainingBuffer.length - 1)]];

但是,我仍然收到此错误和警告: No visible @interface for 'NSString' 声明选择器 'subStringWithRange' 并且警告 'NSmakeRange' 对于 C99 无效

任何帮助将不胜感激谢谢:)

4

1 回答 1

0

这很奇怪,因为就像一周前一样,我写了一些东西来在视觉上模拟点阵打印机,它面临着同样的问题。

我会完全忘记字符数组,因为无论如何这就是字符串,只保留一个NSString remainingBuffer对象。每当 NSTimer 说是时候打印一个字符时,如果缓冲区不为空,则从中读取第一个字符,打印该字符,然后从缓冲区中删除第一个字符,如下所示:

remainingBuffer = [remainingBuffer subStringWithRange: NSmakeRange(1, remainingBuffer.length - 1)];

如果NSString设计正确,它不应该为文本分配任何新数据,而只是返回一个 NSString,其指向其字符数组的内部指针比旧字符串大一个字符长度。

每当您需要告诉控制台打印某些内容时,只需附加到remainingBuffer

快乐编码!

于 2013-03-17T19:48:31.583 回答