iOS页面卡顿问题的的优化

1. 计算UITableViewCell高度问题####

问题一:做ios开发的都知道在不定高的table里计算UITableViewCell高度是个很蛋疼的时
解决: UITableViewCell里的元素到使用约束布局,根据约束来得到高度。就不用来自己计算高度了。

问题二:ios8跟ios7高度计算机制不同,ios7会缓存已经得到过的高度,ios8每次都会去计算一次高度。
解决:自己做一下高度的缓存咯。

问题三:在什么时候计算高度比较好呢?在滑动的时候再去计算高度,肯定也会消耗一些性能的。
解决:预缓存机制,利用RunLoop空闲时间执行预缓存任务。

这三个问题大神都解决了,原文链接

在一些不复杂的Cell可以用这种方法,可以加快开发效率,不用自己计算高度了。但是在一些复杂视图里,还是自己用frame去计算高度,并自己在后台线程里缓存比较好,因为autolayout本身比frame是更消耗资源的。


以下内容是对ibireme同学的iOS 保持界面流畅的技巧博文的学习。感谢大神的分享

2. CPU资源消耗优化####

  • 对象创建
    尽量用轻量的对象代替重量的对象,可以对性能有所优化。比如 CALayer 比 UIView 要轻量许多,那么不需要响应触摸事件的控件,用 CALayer 显示会更加合适。
  • 对象调整
    对象的调整也经常是消耗 CPU 资源的地方。当视图层次调整时,UIView、CALayer 之间会出现很多方法调用与通知,所以在优化性能时,应该尽量避免调整视图层次、添加和移除视图。
  • 对象销毁
    我之前一般都不会取销毁对象的,看来我错了,一些没用的资源还是要及时销毁的。
    如果对象可以放到后台线程去释放,那就挪到后台线程去。这里有个小 Tip:把对象捕获到 block 中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在后台线程销毁了。
    NSArray *tmp = self.array;
    self.array = nil;
    dispatch_async(queue, ^{
    [tmp class];
    });
  • 布局计算
    视图布局的计算是 App 中最为常见的消耗 CPU 资源的地方。如果能在后台线程提前计算好视图布局、并且对视图布局进行缓存(可以在model里算好宽高位置等,不要多次计算),那么这个地方基本就不会产生性能问题了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://blog.csdn.net/guojin08/article/details/60773120 屏幕...
    pony23阅读 4,411评论 0 2
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,432评论 30 472
  • 这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过...
    翻炒吧蛋滚饭阅读 6,891评论 0 19
  • 1.请你谈谈static和宏定义的区别。什么时候用static什么时候用宏定义。 让你声明的常量只在你声明的文件里...
    LikeSomeBody阅读 5,864评论 0 0
  • http://blog.sina.com.cn/s/blog_5b6cb950010116om.html 建表ca...
    cure_py阅读 2,656评论 0 0

友情链接更多精彩内容