您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 安卓开发 >> 正文

增强iOS应用程序性能的提示和技巧的初级篇

作者:佚名    责任编辑:admin    更新时间:2022-06-22

本文主要讲述了25个增强iOS应用程序性能的提示和技巧的初级篇,希望对大家有所帮助。

不要阻塞主线程

永远都不要在主线程做繁重的任务。因为UIKit的左右任务都在主线程中进行,例如绘制、触摸管理和输入响应。

在主线程做所有任务的风险是:如果你的代码阻塞了主线程,那么程序将出现反应迟钝。这回招致用户在App Store上对程序的差评!

在执行I/O操作中,大多数情况下都会祖塞主线程,这些操作需要从读写外部资源,例如磁盘或者网络。

关于网络操作可以使用NSURLConnection的如下方法,以异步的方式来执行:

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

或者使用第三方框架,例如AFNetworking。

如果你需要做一些其它类型开销很大的操作(例如执行一个时间密集型的计算或者对磁盘进行读写),那么就使用GCD(Grand Central Dispatch),或NSOperations 和 NSOperationQueues。

下面的代码是使用GCD的一个模板:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

// switch to a background thread and perform your expensive operation

dispatch_async(dispatch_get_main_queue(), ^{

// switch back to the main thread to update your UI

});

});

如上代码,为什么在第一个dispatch_async里面还嵌套了一个dispatch_async呢?这是因为关于UIKit相关的代码需要在主线程里面执行。

可以看看Ray Wenderlich中的教程:iOS中多线程和GCD—初级,以及Soheil Azarpour的如何使用NSOperations和NSOperationQueues教程。

6) 让图片的大小跟UIImageView一样

/programming/UploadFiles_4795/201510/2015102114405595.jpg

1

 

确保图片和UIImageView大小一致

如果需要将程序bundle中的图片显示到UIImageView中,请确保图片和UIImageView的大小是一样的。因为图片的缩放非常耗费资源,特别是将UIImageView嵌入到UIScrollView中。

如果是从远程服务中下载图片,有时候你控制不了图片的尺寸,或者在下载之前无法在服务器上进行图片的缩放。这种情况,当图片下载完之后,你可以手动进行图片的缩放——做好是在后台线程中!——然后再在UIImageView中使用缩放过的图片。

选择正确的集合

选择正确的集合

学习使用最适合的类或对象是编写高效代码的基础。特别是在处理集合数据时,尤为重要。

苹果的官网上有一篇文章:集合编程主题(Collections Programming Topics)——详细的介绍了在集合数据中可以使用的类,以及什么情况下使用哪个类。在使用集合时,每个开发者都应该阅读一下这个文档。

太长,不想阅读(TLDR)?下面是常见集合类型的一个简介:

•数组:是一个值按顺序排列的一个列表。根据索引可以快速查找,不过根据值进行查找就比较慢,另外插入和删除也比较慢。

•字典:  存储键/值对。根据键可以快速查找。

•Sets:  是一个值无序排列的列表,根据值可以快速查找,另外插入和删除也比较快。

8) 使用GZIP压缩

使用GZIP压缩

越来越多的程序依赖于外部数据,这些数据一般来自远程服务器或者其它的外部APIs。有时候你需要开发一个程序来下载一些数据,这些数据可以是XML,JSON,HTML或者其它一些文本格式。

问题是在移动设备上的网络是不确定的。用户的设备可能在EDGE网络一分钟,然后接着又在3G网络中。不管在什么情况下,都不要让用户等待。

有一个可以优化的选择:使用GZIP对网络传输中的数据进行压缩,这样可以减小文件的大小,并加快下载的速度。压缩对于文本数据特别有用,因为文本具有很高的压缩比。

iOS中,如果使用NSURLConnection,那么默认情况下已经支持GZIP压缩了,并且基于NSURLConnection的框架页支持GZIP压缩,如AFNetworking。甚至有些云服务提供商已经提供发送经压缩过的响应内容,例如 Google App Engine。

以上就是小编为大家整理的25个增强iOS应用程序性能的提示和技巧的初级篇,希望对大家有所帮助。