gpt4 book ai didi

ios - Swift 中的 sizeWIthAttributes 出奇地慢

转载 作者:行者123 更新时间:2023-11-29 02:28:18 32 4
gpt4 key购买 nike

一些背景知识:我正在编写一个应用程序,其中包含一个 slider 来更改整个应用程序中使用的字体大小。当用户滑动 slider 时,用户会看到应用程序的字体实时变大和变小。我的很多 UI 都依赖于 NSStringsizeWithAttributes 来计算内在内容大小和类似的东西。

我最初开始用 Objective-C 编写这个应用程序,现在我正在迁移到 Swift。一段时间后,我注意到我的字体 slider 不再像以前那样执行。它曾经很流畅,现在对于每一个新的字体大小,它都显得很卡顿。

事实证明,性能下降是由 sizeWithAttributes 引起的。事实证明,在 Swift 中比在 Objective C 中慢得多。我执行了一个简单的测试(在 iPhone 6 上),在 Swift 和 Objective C 中执行了 100,000 次 sizeWithAttributes。结果:

  • objective-c (NSString):0.35 秒
  • Swift(字符串):13.6 秒

所以 Swift 的实现几乎慢了 40 倍!!有人可以建议我在这里做什么吗?我可以解决这个问题吗?

最佳答案

事实证明,慢的不是 sizeWithAttributes,而是我输入字典的方式!

如果我运行这段代码:

let size = string.sizeWithAttributes(attributes)

attributes 类型为 [String:AnyObject] 它比 attributes 类型为 [NSObject] 慢很多倍:AnyObject]!

从现在开始,通过使用 [NSObject:AnyObject] 作为属性的类型来解决问题!

编辑:如果我将属性键入 Dictionary,它甚至比 [NSObject:AnyObject]

更快

关于ios - Swift 中的 sizeWIthAttributes 出奇地慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213143/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com