遇到一种奇怪的现象。我的应用程序是围绕一个垂直的UIScrollView(即“feed”)构建的,它本质上是一个非常像Facebook的活动时间线。当用户滚动到底部时,Feed可以以20块为单位加载旧项目。
前0-20项(默认加载)快速滚动,当添加项目20-40时它会继续快速滚动,但是当添加项目40-60并且应用程序在60-80时基本上无法使用时性能会显着下降添加。
整个场景中的CPU使用率非常奇怪:
这让我相信缺乏性能不是滚动视图的大小,而是导致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构建并运行了应用程序。它没有显示同样的问题。随着UIScrollView的大小增加,ScrollView性能降级更加可预测,并且CPU使用率不会下降。 iOS 8中的错误??
答案 0 :(得分:1)
您应该考虑切换到UITableView。它们旨在避免这个确切的问题。当细胞离开视野时,它们会被重新用于现在正在使用的细胞。这避免了分配这么多。这就是为什么当桌子变大时,你的联系人列表,iPod歌曲,facebook feed等不会降级。
答案 1 :(得分:1)
我遇到了同样的问题。基本上我开发了一个带有大量子视图的scrollview,在iOS8问世之前,它在iOS 7上运行得非常顺畅,但是当我使用新的iOS8设备进行测试时(XCode5作为XCode6的方式是错误的),scrollview变得非常慢,与iOS7相比响应速度较慢。
注意我没有更改任何代码,它是如此的古怪。所以我决定试一试,看看iOS7和iOS8上发生了什么。事实证明,iOS8使用的内存比iOS7更多,甚至认为代码/资产完全相同。因此从iOS7到iOS8的性能都会下降,理论上性能应该会在新的iOS上变得更好。
对我来说,似乎苹果有点急于发布iOS8,但没有确保一切都经过精心打磨和测试