【发布时间】:2015-12-26 11:28:18
【问题描述】:
当用户在工具栏中键入文本时,我目前正在尝试查找替换文本字符串。到目前为止,我已经通过使用 ViewDidChange 方法更新文本视图并使用 stringByReplacingOccurrencesOfString 来完成此操作,如下面的代码所示。
这在查找和替换几个 (10-20) 字符串时效果很好,但是当使用 1,000 多个潜在替换执行此操作时,系统会变得非常滞后 - 您可以在键入时看到模拟器中的性能下降。
有谁知道如何提高效率?这是因为内存泄漏吗?我的一个想法是只对字符串中的最后一个单词使用替换字符串方法(即只查看用户输入的最后一个单词,但这只是对这可能如何加快速度的猜测,任何其他想法/想法/点击将不胜感激!
需要注意的另一点,如果用任何基于 unicode 的文本替换系统速度会更慢,有人知道解决此问题的具体方法吗?
- (void)textViewDidChange:(UITextView *)textView
{
if (textView != self.inputToolbar.contentView.textView) {
return;
}
textView.text = [textView.text stringByReplacingOccurrencesOfString:@"(?wi)\\bsmart\\b" withString: @"clever" options: NSRegularExpressionSearch range: NSMakeRange(0, [textView.text length]) ];
textView.text = [textView.text stringByReplacingOccurrencesOfString:@"(?wi)\\bfast\\b" withString: @"speedy" options: NSRegularExpressionSearch range: NSMakeRange(0, [textView.text length]) ];
textView.text = [textView.text stringByReplacingOccurrencesOfString:@"(?wi)\\bhappy\\b" withString: @"content" options: NSRegularExpressionSearch range: NSMakeRange(0, [textView.text length]) ];
}
【问题讨论】:
标签: objective-c