【发布时间】:2014-11-18 01:54:44
【问题描述】:
遇到一个奇怪的现象。我的应用程序是围绕垂直 UIScrollView(即“提要”)构建的,它本质上是一个活动时间线,很像 Facebook 的。当用户滚动到底部时,Feed 可以以 20 块为单位加载较旧的项目。
前 0-20 个项目(默认加载)快速滚动,当添加项目 20-40 时它会继续快速滚动,但是当添加项目 40-60 时性能会显着下降,并且应用程序在 60-80 时基本上无法使用已添加。
非常奇怪的是整个场景中的 CPU 使用率:
- 20 个 Feed 项(默认):CPU 65%
- 40 个提要项:CPU 40%,线程 1 活动下降约 25%(目测)
- 60 个提要项:CPU 18%,线程 1 比之前下降 50%
- 80 个提要项:CPU 7%,线程 1 再次比上一个下降 50%
这让我相信性能不足不是滚动视图的大小,而是导致 CPU 以某种奇怪的方式脱离自身的其他原因。您预计 CPU 利用率会增加,而不是减少。
我以为我可能无意中添加了不在主线程上的新提要项目并以某种方式搞砸了,但事实并非如此。
有什么想法吗?
仅供参考(运行 iOS8 的 iPhone 5,使用 iOS 8 SDK 构建的应用程序,我认为在 iOS 7 上运行 iOS 7 SDK 构建时我没有遇到这种情况。性能下降,但是,IIRC,可以预见 UIScrollView 大小 - 我将尝试确认)。
更新 我刚刚在运行 iOS 7.0.6 的 iPhone 4S 上使用 7 SDK 和 8 SDK 构建并运行了该应用程序。它没有显示相同的问题。 ScrollView 性能的下降更加可预测,并且 CPU 使用率不会随着 UIScrollView 大小的增加而下降。 iOS 8 中的错误??
【问题讨论】:
标签: ios objective-c uiscrollview ios8 cpu-usage