NSAttributedString 在 iOS 8 下性能更差

2023-11-26

在 iOS 8(和 8.1 beta)下,创建 NSAttributedString 的性能比 7 差很多(2-3 倍)。如果您在同一个视图上使用多个实例,这一点尤其明显,加载 4 个不同的标签将导致用户点击和新视图出现后一秒以​​上的延迟。

不幸的是,您甚至不能将其放入另一个线程中,因为它在幕后使用 WebKit。我已向 Apple 提交了一个错误,但我需要有关解决方法或更好的实施方法的想法。

在viewDidLoad中:

self.labelOne.attributedText = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
                                                     documentAttributes:nil
                                                                  error:&error];

快速示例项目:https://github.com/BenSS/AttributedStringTest

UPDATE:
iOS9 再次进行了改进,因此速度并没有完全削弱 UI 交互。不幸的是,它仍然不如 iOS7 下那么快。 (通过演示亲自测试一下!)


在今年(2014 年)的 WWDC 上,我向 TextKit 团队提出了这种行为。具体来说,我详细阐述了我们中的一些人如何需要异步 HTML 解析的支持。他们感到惊讶的是,没有用于异步创建属性字符串的公共 API。

鉴于我们的一些应用程序的核心处理渲染大量 HTML 文本,即使在 iOS 7 上,系统提供的渲染也不太理想。因此,我被告知要提交一个错误;关于此问题提交的错误越多,苹果解决该问题的可能性就越高。

我的建议是使用DT核心文本,它们准确地提供了我们在这个问题上所需要的东西。唯一的其他解决方案就是等待。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSAttributedString 在 iOS 8 下性能更差 的相关文章

随机推荐

  • Maven:如何避免版本附加到 Maven 中的 war 文件?

    我使用 Maven 作为构建文件 这是我对要生成的 war 文件名的以下设置 我使用的是 Maven 版本 2 2 1
  • NVarchar、Bin 排序规则、Bin2 排序规则之间有什么区别?

    所有 3 个选项均区分大小写和重音 并支持 Unicode 根据文档 NVarchar 根据 相关语言或字母表的词典 对数据进行排序和比较 Bin 根据 位模式 对数据进行排序和比较 Bin2 根据 Unicode 数据的 Unicode
  • 将 Spring bean 注入 EJB3

    我正在尝试使用以下方法将 Spring beans 注入到 EJB 中 Interceptors SpringBeanAutowiringInterceptor class 但我无法让它与beanRefContext xml我见过的例子 这
  • 如何在 ggplot2 中按时间顺序排列月份而不是写出月份?

    我正在尝试绘制计数与月份的关系图 ggplot dat aes x month y count group region geom line data mcount mcount region West coast colour black
  • AWS Cognito - 从 ADFS 创建组作为 Cognito 组

    应用程序通过 Open ID Connect 协议与AWS认知 它连接到ADFS 通过 SAML 进行通信 Cognito 本质上是 代理 ADFS 服务器 ADFS 持有组映射应用程序需要的 我想将这些组作为实际的 Cognito 组导入
  • C++11 以字符串形式获取当前日期和时间

    在 C 11 中以字符串形式获取日期和时间的最先进方法是什么 我知道关于std put time 但参考文献说我只能在流中使用它 有std chrono system clock它提供了to time t返回时间为time t而且缺少日期
  • Laravel - 擦除包含特定字符串的所有缓存/redis 键

    是否可以使用 Laravel 删除 Redis 中与特定字符串匹配的所有键 例如 如果我想忘记具有单词 products 的键 它会忘记以下键 laravel 896235872385237588327582370375acaca23532
  • 字符串中的“\n”不起作用

    我有一小段适合我的操作系统的代码 print Type your document below print Press enter to save print Type n for a new line file input print E
  • Powershell New-PSSession 访问被拒绝 - 管理员帐户

    我尝试使用 powershell PSSession cmdlet 但我遇到了访问被拒绝错误 我尝试做的是使用管理员帐户运行命令New PSSession or Enter PSSession 不幸的是我收到访问被拒绝错误 我相信我正确地遵
  • 将值设置为 jquery 自动完成组合框

    我在用jquery 自动完成组合框一切都很好 但我也想通过 JavaScript 设置特定值 例如 value val somevalue 它设置为选择元素 但自动完成功能的输入元素没有变化 当然 我可以直接选择这个输入并设置值 但是还有其
  • Clojure 传感器是否急切?

    在这篇博客文章中 JavaScript 中的 CSP 和转换器 作者指出 首先 我们必须认识到许多数组 或其他集合 操作 例如map filter and reverse可以定义为reduce So 然后我们看到Clojure 中的许多实现
  • Windows 8 应用程序上的全局应用程序栏

    我正在开发一个 Windows 8 应用程序项目 我使用的是 Visual Studio 2012 它是预定义的模板 GroupedPage SplitPage ItemsPage 这时候我需要添加一个App栏 我选择的方式是创建一个并将其
  • Polyfill 或 ECMAScript5 新功能的解决方法?

    我想用新的来编写我的JS代码ECMAScript5 特性今天和未来都有效 由于并非所有浏览器都支持所有功能 尤其是 IE 例如Object create Array isArray or JSON 我知道一些解决方法 例如使用json2 j
  • 尝试获取 ImageView 中图像的显示尺寸

    我正在尝试获取图像视图中显示的图像的实际大小 实际上我的图像比屏幕大 图像视图正在调整图像大小以显示它 我正在寻找这个新尺寸 我试图在自定义视图中重写 ImageView 的 onDraw 方法 但我没有得到正确的高度和宽度 public
  • 如何在 C# 中解码 HTML 字符?

    我有用 HTML 字符实体编码的电子邮件地址 NET 中有什么可以将它们转换为纯字符串吗 您可以使用HttpUtility HtmlDecode 如果您使用 NET 4 0 您还可以使用WebUtility HtmlDecode它不需要额外
  • Android 中的 OpenCV 模板匹配示例

    我是 OpenCV 的初学者 我正在尝试制作一个示例 Android 应用程序 以使用 OpenCV 模板匹配来匹配给定图像中的模板图像 我在互联网上搜索 找不到合适的 android 或 java 代码来满足我的要求 但我有 C 代码 我
  • SQLite Android 无法打开数据库文件

    编辑 我在手机上尝试过 它可以工作 有人能告诉我为什么它不能在模拟器上工作吗 我正在尝试在 Android 上打开数据库 但它抛出 无法打开数据库文件 异常 在调试器中 似乎错误发生在线路上mDb mDbHelper getWritable
  • Gradle 项目刷新失败:已完成

    背景 此时我已经与 Studio Gradle 斗争了一天左右 最初存在多个 PEBKAC 错误 即权限和资源限制 但后来已得到解决 不幸的是 google fu 因当前错误而使我失败 尝试完成时特别发生错误 gradlew clean没有
  • 如何使用 Xuggler 获取音频进行编码

    我正在编写一个记录屏幕和音频的应用程序 虽然屏幕录制工作完美 但我在使用 JDK 库获取原始音频时遇到困难 这是代码 try Now we re going to loop long startTime System nanoTime Sy
  • NSAttributedString 在 iOS 8 下性能更差

    在 iOS 8 和 8 1 beta 下 创建 NSAttributedString 的性能比 7 差很多 2 3 倍 如果您在同一个视图上使用多个实例 这一点尤其明显 加载 4 个不同的标签将导致用户点击和新视图出现后一秒以 上的延迟 不