为什么Apple的SimpleTextInput示例代码效率低下

jsc*_*hoi 6 performance cocoa-touch core-text ios

我正在查看Apple的SimpleTextInput示例代码,这是一个iOS文本编辑器的示例项目,它使用Core Text来显示文本.这是一件很棒的事情.

但其自述文件说:

此示例代码不应被视为文本编辑器的模板,而是作为如何将文本输入系统绑定到预先存在的文本编辑器的示例.该项目使用CoreText是天真和低效的; 它只处理从左到右的文本布局,对于任何文本编辑器来说它绝不是一个好的模板.这是一个实现,仅用于说明如何将系统键盘(即文本输入系统)绑定到某些预先存在的文本编辑器.

我很好奇这个文本编辑器是如何效率低下的.它的设计是否具有根本性?简单的调整可以改善吗?UITextView可能有隐藏在其中的真正精心设计的缓存算法; 那么问题是SimpleTextInput缺少它们吗?

atr*_*ane 3

Apple\xe2\x80\x99s SimpleTextInput 示例代码,使用在单个对象中一次性绘制文本CTFrameRef:这是最简单的选项,因为您可以获得核心文本以在一个块中绘制所有内容。这样做的唯一缺点是,它的效率可能很低,因为CTFrameRef每次击键时都需要重新创建,并且每次编辑时都需要重新绘制所有文本,这会降低应用程序的速度,尤其是在有大量文本和大量属性的情况下。

\n\n

有关实现核心文本编辑器的更有效方法,请阅读富文本编辑:选择主题:逐行绘制

\n