替换UITextView中的文本运行缓慢

时间:2013-03-21 04:03:03

标签: ios objective-c uitextview

我有一个UITextView,我在UITextView.text的末尾替换了一个单词,如下面的代码:

-(void)replaceTextViewWithWord:(NSString *)word {
    NSString *currentTextViewText = self.textView.text;

    currentTextViewText = [currentTextViewText stringByReplacingCharactersInRange:NSMakeRange([self.textView.text length] - [word length], [word length]) withString:word];

    self.textView.text = currentTextViewText;    
}

替换工作正常,但是当textView变得更长时,它运行得非常缓慢。

还有其他更好的方法吗?

我尝试使用 replaceRange:withText 一周,但仍然卡住了。 在我的情况下,不知道如何使用它来替换它。

请指导!提前致谢!这是一项紧迫的任务。

2 个答案:

答案 0 :(得分:0)

当您使用不可变字符串时,您正在创建一个非常长的字符串并将其分配给已创建的NSString。

而不是NSString使用NSMutableString而不是一些头颅将被减少。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    FooBarCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
    if (cell == nil) {
        cell = [[EditCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCellIdentifier];
        cell.mutableString = [NSMutableString string];
        cell.textView.text = cell.mutableString;
    }
    [cell.mutableString setString:@"text to show"];
    return cell;
}

答案 1 :(得分:0)

如果您使用UITextView(没有适用于ios6及以下版本),没有更好的方法

在ios7上有textkit