美文网首页
iOS 优化

iOS 优化

作者: 一个半吊子工程师 | 来源:发表于2020-09-16 16:23 被阅读0次
    • 资源优化:对资源文件下手,压缩图片/音频,去除不必要的资源
      iOS项目瘦身,删除无用图片,批量压缩图片
    • 编译优化:
      release版应该选择Fastest, Smalllest,这个选项会开启那些不增加代码大小的全部优化(新版Xcode默认)
      去除符号信息(都是新版Xcode默认)
    • 可执行文件优化:
      查看第三方库编译之后,.o文件大小,如果对大小影响很大可以考虑替换
      删除无用代码,如果项目历时长,代码遗留多,这样还是比较有效的(可以通过脚本查找没有引用的类和没有被调用的方法)

    内存优化

    • 延迟加载 Views 、一些资源
    • 做好缓存工作,如果服务器没有更新资源,客户端没必要再多请求一次,直接加在本地资源就好-YYCache
    • Autorelease Pool降低内存峰值
    • 图片缓存

    性能优化

    • view 设置为不透明,避免图层混合,消耗GPU资源

    • 圆角、阴影、光栅化,重写DrawRect这些导致离屏渲染的情况,都应该尽量避免

    • 层次过多的视图,可以考虑使用 Frame布局, autolayout 这时候性能明显低于 Frame布局

    • 合理的线程,I/O不要在主线程

    • 预处理和延迟加载:对于可视化的内容,尽量提前加载,而对于优先级比较低的任务,可以延迟加载,这样可以提高用户体验

    • 使用正确的 API

    • 了解imageNamed: 与 imageWithContentsOfFile:的差异(imageNamed: 适用于会重复加载的小图片,因为系统会自动缓存加载的图片,imageWithContentsOfFile: 仅加载图片)

    • 选择合适的容器:例如数组就是根据index查找很快,插入删除慢,而对于字典,用键查找很快

    • 避免日期格式转换:NSDateFormatter是很耗时的,比较推荐的方式是使用 C来搞或者缓存 NSDateFormatter 的结果方式

    • TableView 优化

    • 设置合适的reuseIdentifier,重用 cell

    • cell 圆角,避免离屏渲染

    • 对于高度固定直接设置rowHight,保证不必要的高度计算和调用,对于可变的Cell,预估算行高

    • 以前看到过一个第三方框架:使用runloop,页面处于空闲状态时执行计算,正在滑动列表时显然不应该执行计算任务影响滑动体验,当 UI 没在滑动时,默认的 Mode 是 NSDefaultRunLoopMode,当用户正在滑动 UIScrollView 时,RunLoop 将切换到 UITrackingRunLoopMode 接受滑动手势和处理滑动事件(包括减速和弹簧效果),此时,其他 Mode(除 NSRunLoopCommonModes 这个组合 Mode)下的事件将全部暂停执行,来保证滑动事件的优先处理

    相关文章

      网友评论

          本文标题:iOS 优化

          本文链接:https://www.haomeiwen.com/subject/tgersktx.html