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中。当然,如果需要,您必须实现自己的滚动,或者为删除的滚动使用空行,以便滚动行为保持不变