UITableView在iOS 7里的性能问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
nixzhu
V2EX    iDev

UITableView在iOS 7里的性能问题

  •  
  •   nixzhu
    nixzhu 2013-10-07 16:39:48 +08:00 5409 次点击
    这是一个创建于 4389 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在iOS 7上,TableView的`reloadRowsAtIndexPaths:withRowAnimation:`耗时巨多,有性能问题,只好用`reloadData`。而iOS 6就没问题,可能是iOS 7优化不够。

    你若要频繁更新Cell数据就要注意方法了!

    详细请看 http://nixzhu.me/post/uitableview-profile-in-ios7
    12 条回复    1970-01-01 08:00:00 +08:00
    so898
        1
    so898  
       2013-10-07 17:07:37 +08:00   1
    我前些日子也是对于整个UITableView进行了一次完整的性能跟踪,在楼主这个问题上,我觉得是复用Cell导致的
    reloadData会清除复用数据,刷新Row却不会

    再要提一下,现在大神们的普遍观点是:『iOS7和iOS7 SDK都没有问题,出问题是你的代码。这写代码之前就没有优化好,现在出问题很正常,以前只是没有暴露而已。』
    alexrezit
        2
    alexrezit  
       2013-10-07 17:30:09 +08:00
    不知道在 profiler 里将它继续展开会是怎样...

    @so898
    这好像是我说的... - -
    txx
        3
    txx  
       2013-10-07 17:50:20 +08:00
    @alexrezit 膜拜大神!
    nixzhu
        4
    nixzhu  
    OP
       2013-10-07 18:52:02 +08:00
    @so898 完整探索,要学习。不过对后面一段略有不同观点,iOS 6和iOS 7有差别,就算是Apple自家的Podcast应用在iOS 7上都有UI的bug。不该说iOS 7有性能问题,只好说两者之底层实现有差异,我们都是做应用层面开发的,只有适应它这一条路可走。所以以前的代码就是以前的代码,没有完美的优化这一说。应用不怪iOS 7,iOS 7也不会怪应用,程序员在中间继续适配吧。
    txx
        5
    txx  
       2013-10-07 19:25:51 +08:00
    @nixzhu cell这块确实6和7有很多差别,但是我目前没发现出现效率兼容问题...您能不能 写个 demo 来重现一下 这个 bug 大伙儿来看看 是不是 您的 cell 重用优化的有问题 还是 对于iOS 7兼容来说 这是一个坑?
    alexrezit
        6
    alexrezit  
       2013-10-07 19:41:43 +08:00
    @txx
    别闹.

    @nixzhu
    Talk is cheap. Code?
    nixzhu
        7
    nixzhu  
    OP
       2013-10-07 19:57:24 +08:00
    @alexrezit @txx 我刚发现真是我的code没写好,代码难看更不愿示人。总之绝对不关iOS 7的事情,见笑了。
    clowwindy
        8
    clowwindy  
       2013-10-07 23:30:17 +08:00
    @so898 真巧,前阵子在知乎上也对某人这么说过……
    so898
        9
    so898  
       2013-10-08 00:13:58 +08:00
    @alexrezit 我被你在V2EX上面说过的
    @clowwindy 看来在知乎上说我的那个人就是你没跑了

    也算是感谢你们二位了,要不是被你们说了,我还真不会去花一个下午仔细查看每个步骤消耗的CPU时间,然后针对做优化
    clowwindy
        10
    clowwindy  
       2013-10-08 00:33:48 +08:00 via Android
    @so898 应该不是,是在一个不同的问题里说的
    tgfbeta
        11
    tgfbeta  
       2013-10-09 09:52:55 +08:00
    根据个人项目profiling的情况,我觉得是UITableViewCell里那些label使用了Core Text来显示文字造成的。iOS 7之前的瓶颈不在那里。
    tgfbeta
        12
    tgfbeta  
       2013-10-09 10:07:33 +08:00
    另外,我遇到的问题是,reload cell时候占时过长,如果是在scrollViewDidScroll:调用的,会阻塞进一步的卷动;而如果延后执行,又因为Runloop Mode的缘故,刷新被卷动阻塞……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2890 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 14:08 PVG 22:08 LAX 07:08 JFK 10:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86