Objective c 如何加快对UITextView的更新?

Objective c 如何加快对UITextView的更新?,objective-c,ios,performance,uikit,uitextview,Objective C,Ios,Performance,Uikit,Uitextview,我有一个计算器应用程序,上面有一个由UITextView制成的“会计磁带”。一旦磁带上有大约50-100行,文本视图的更新速度就会非常慢,设置新内容(50-100行文本)很容易需要100毫秒或更长时间。问题是我不能将这个延迟移到后台,因为UIKit坚持在主线程上被调用 我能做什么?我想到的唯一一件事是使用一个定制的UIView子类重写磁带,该子类将更适合该任务,但我并不急于这样做,因为这需要大量的工作,UITextView除了这个问题外,还可以正常工作。我很惊讶您在只处理50行时遇到问题,所以坦

我有一个计算器应用程序,上面有一个由
UITextView
制成的“会计磁带”。一旦磁带上有大约50-100行,文本视图的更新速度就会非常慢,设置新内容(50-100行文本)很容易需要100毫秒或更长时间。问题是我不能将这个延迟移到后台,因为UIKit坚持在主线程上被调用


我能做什么?我想到的唯一一件事是使用一个定制的
UIView
子类重写磁带,该子类将更适合该任务,但我并不急于这样做,因为这需要大量的工作,
UITextView
除了这个问题外,还可以正常工作。

我很惊讶您在只处理50行时遇到问题,所以坦率地说,我想知道这里是否还有其他问题。我会通过Instruments中的“Time Profiler”运行代码,并确认真正的问题是更新
UITextView
,而不是其他问题。在放弃
UITextView
之前,这里可能需要进行一些研究


但让我们假设您决定重新开始(我觉得不太可能),而不是使用
UITextView
。我可能建议利用现有的控件,例如,单元格之间没有分隔符的
UITableView
,或者,如果最坏的情况发生,则使用
UIScrollView
,其中磁带上的每一行都是
UILabel
,您可以对已从屏幕上滚动的标签执行
UITableView
样式的排队。一组比从头开始要好一点的选项。

假设确实是
UITextView
速度慢,而不是其他东西,我建议您将textview的文本更改为仅可见的部分。所有在外部滚动的文本不需要保留在textview中。当然,如果需要,您必须实现自己的滚动,或者为删除的滚动使用空行,以便滚动行为保持不变