CoreText 比 Text Kit 快吗?

Is CoreText faster than Text Kit?

如果我有多个自定义 UITableViewCells 或 UICollectionViewCells 带有多个标签和 UI 元素,并且保持良好的滚动速度是必不可少的,那么 CoreText 会是比 TextKit 更快的解决方案?

在不了解详情的情况下无法按原样回答。如果你想知道你将不得不编写你的代码的两个版本并衡量哪个版本更快。在您完成之前,答案将始终是 "It depends".

最好的建议是从更高级别的 API(在本例中为 Text Kit)开始,看看性能是否足够好。如果是,那么忘记这个问题。如果没有启动探查器并找出需要改进的地方,然后可能会回来提出有关如何优化的具体问题。

TextKit 建立在 CoreText 之上。使用更高级别的开销 API 可以忽略不计。

事实上,在很多情况下,TextKit 类 是免费桥接到它们的 CoreText 等效项(就像 Foundation 类 和 NSStringNSDictionary 是免费桥接到他们的 CoreFoundation 同行)。示例:NSParagraphStyle 是免费桥接到 CTParagraphStyle:

NSMutableParagraphStyle *paragraphStyle = 
    [[NSMutableParagraphStyle alloc] init];

paragraphStyle.alignment = NSTextAlignmentRight;

CTTextAlignment alignment;
CTParagraphStyleGetValueForSpecifier((CTParagraphStyleRef)paragraphStyle,
                                     kCTParagraphStyleSpecifierAlignment,
                                     sizeof(CTTextAlignment),
                                     &alignment);

NSAssert(alignment == kCTTextAlignmentRight, @"!!");

在大多数情况下,您最终会编写大量样板文件来访问 CoreText APIs。 TextKit 为您处理了很多这样的事情。

最重要的是,尽可能使用 TextKit。如果您无法使用 TextKit 实现结果,请使用 CoreText。