iOS应用性能调优的建议和技巧(四)

140 阅读2分钟

「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。

初学者性能提升

        该部分致力于一些能提高性能的基本改变。但所有开发者都有可能会忽视该部分下的一些建议。

6. 在Image Views中调整图片大小

        如果要在UIImageView中显示一个来自bundle的图片,你应保证图片的大小和UIImageView的大小相同。在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。

        如果图片是从远端服务加载的你不能控制图片大小,比如在下载前调整到合适大小的话,你可以在下载完成后,最好是用background thread,缩放一次,然后在UIImageView中使用缩放后的图片。

7. 选择正确的Collection

        学会选择对业务场景最合适的类或者对象是写出能效高的代码的基础。当处理collections时这句话尤其正确。以下是常见collection的总结:

        1> Arrays: 有序的一组值。使用index来lookup很快,使用value lookup很慢, 插入/删除很慢。

        2> Dictionaries: 存储键值对。 用键来查找比较快。

        3> Sets: 无序的一组值。用值来查找很快,插入/删除很快。

        另外Apple官方做了详细的介绍:Collections Programming Topics文档,介绍了可用的classes间的差别和你该在哪些场景中使用它们。这对于任何使用collections的人来说是一个必读的文档。

8. 打开gzip压缩

        大量app依赖于远端资源和第三方API,你可能会开发一个需要从远端下载XML, JSON, HTML或者其它格式的app。问题是我们的目标是移动设备,因此你就不能指望网络状况有多好。一个用户现在还在edge网络,下一分钟可能就切换到了3G。不论什么场景,你肯定不想让你的用户等太长时间。

        减小文档的一个方式就是在服务端和你的app中打开gzip。这对于文字这种能有更高压缩率的数据来说会有更显著的效用。

        好消息是,iOS已经在NSURLSession中默认支持了gzip压缩,当然AFNetworking这些基于它的框架亦然。像Google App Engine这些云服务提供者也已经支持了压缩输出。

        如果你不知道如何利用Apache或者IIS(服务器)来打开gzip,可以读下这篇文章