我正在优化我的设备上看起来很慢的转换。当我选择UIViewController
行时,我会从另一个UITableView
推送viewWillAppear
。在选择行之后和按下新视图之前会有明显的暂停。
有些日志记录表明我的所有代码都相当快,从行选择到推送控制器viewWillAppear
。但是viewDidAppear
和{{1}}之间的时间记录在0.7秒左右。
过渡本身(我相信)应该只需0.3秒。什么可以解释其余部分?
我正在测试iPhone 4,所以我不期待最快的表现。但我应该能够在同一设备上匹配其他类似应用程序的相同性能,不是吗?
答案 0 :(得分:2)
几个星期前我有类似的问题,我写了一篇关于我发现的内容的博客文章:
http://bradbambara.wordpress.com/2014/07/31/object-life-cycle-uiviewcontroller/
TL; DR版本是iOS将:
...所以我的猜测是延迟可能是由于特别长时间的过渡造成的,或者您是否在布局代码中进行了任何性能密集型工作。
答案 1 :(得分:1)
过渡本身(我相信)应该只需0.3秒。什么可以解释其余部分?
资源通常采用以下方法:drawRect:
,layoutSubviews
,viewDidLoad
,viewWillAppear:
。此外,从NIB加载可能需要相当多的时间。
在viewWillAppear:
之后,iOS会生成新(可能是当前)视图的快照,以在两个屏幕之间执行平滑动画。因此,请确保两个控制器视图的绘图和布局代码足够快。