我应该在Quartz中使用Core Text API还是绘制文本API?

时间:2012-03-05 13:18:54

标签: ios core-text

我是iOS的新手,我打算为iOS编写一本书阅读器(如Stanza)。但现在我对Apple提供的文本相关API感到困惑,其中有很多。我看了一下 - 核心文本,看起来很方便。但问题是Core Text只是没有重用内存,为了绘制一页文本,我必须创建一个NSAttributedString,一个CTFramesetterRef和一个CTFrameRef。在屏幕上绘制文本后,应该释放这些对象,它们占用的内存无法重用(或者有一种方法可以重用这些内存?)。

因此,看起来这些API的内存使用效率不高,内存分配和释放过于频繁。

我希望做的是我能够缓存一些上下文设置,当我想绘制一些文本时,在drawRect:中设置上下文,并将文本缓存在普通{{1}中(不是NSMutableString*),稍后我可以将文本附加到NSAttributedString*缓存。

PS:我之所以使用NSMutableString*缓存是因为这本书,一个txt文件太大而无法保存在内存中(就有效使用内存而言),我将永远保留一个文本块,在内存中说几页,当用户翻页时,我会从txt文件中读取更多页面并将文本附加到缓存中,当然我会在缓存开头剪切那些文本满足了一些要求。

问题是:我应该使用哪种Text API?为什么?或者如果我必须使用核心文本,是否可以重用这些内存?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以重复使用内存。 CoreText是一个很好的框架来处理文本。您必须使用CFRelease()来释放获得的内存。请查看CoreFoudation内存管理指南。

相关问题