我有一个类,它的工作是将文本解析成几个页面。我使用sizeWithFont:方法来识别一个页面何时结束而另一个页面何时开始。但不幸的是,由于需要解析的文本数量相当大,整个操作需要在后台线程上执行(完成需要几秒钟)。因此,有时我会在接口上获得可视化工件(UIKit不是线程安全的,但我同时从几个线程调用它),我很想摆脱它。
我需要摆脱在后台线程上使用sizeWithFont:。但是,这种方法似乎没有其他的选择。用Core Graphics找出文本宽度的唯一方法是使用苹果文档中所述的方法:
但我真的很担心这会导致巨大的性能损失。
有谁知道另一种找出文本宽度的方法吗?
发布于 2010-05-12 16:47:19
如果您有可能针对iPhone OS3.2的应用程序,可以查看核心文本。
尽管如此,注意整个Core文本库也不是完全线程安全的。从文件中:
多核考虑: Core文本中的所有单独功能都是线程安全的。字体对象(CTFont、CTFontDescriptor和关联对象)可以由多个操作、工作队列或线程同时使用。但是,布局对象(CTTypesetter、CTFramesetter、CTRun、CTLine、CTFrame和相关对象)应该在单个操作、工作队列或线程中使用。
https://stackoverflow.com/questions/2371402
复制相似问题