我是iOS的新手,我打算为iOS编写一本书阅读器(如Stanza)。但现在我对Apple提供的文本相关API感到困惑,其中有很多。我看了一下 - 核心文本,看起来很方便。但问题是Core Text只是没有重用内存,为了绘制一页文本,我必须创建一个NSAttributedString
,一个CTFramesetterRef
和一个CTFrameRef
。在屏幕上绘制文本后,应该释放这些对象,它们占用的内存无法重用(或者有一种方法可以重用这些内存?)。
因此,看起来这些API的内存使用效率不高,内存分配和释放过于频繁。
我希望做的是我能够缓存一些上下文设置,当我想绘制一些文本时,在drawRect:
中设置上下文,并将文本缓存在普通{{1}中(不是NSMutableString*
),稍后我可以将文本附加到NSAttributedString*
缓存。
NSMutableString*
缓存是因为这本书,一个txt文件太大而无法保存在内存中(就有效使用内存而言),我将永远保留一个文本块,在内存中说几页,当用户翻页时,我会从txt文件中读取更多页面并将文本附加到缓存中,当然我会在缓存开头剪切那些文本满足了一些要求。
问题是:我应该使用哪种Text API?为什么?或者如果我必须使用核心文本,是否可以重用这些内存?
提前谢谢!
答案 0 :(得分:0)
您可以重复使用内存。 CoreText是一个很好的框架来处理文本。您必须使用CFRelease()
来释放获得的内存。请查看CoreFoudation内存管理指南。