今天使用ASIHTTP框架从服务器下载一张图片,但是弄了好久也没弄成功,我想这么成熟的框架不应该不是框架的bug啊,一定是我写的哪里出错了。
起初,我在执行下载用户头像的请求的时候使用的异步请求,我想用异步请求应该更符合情景的。但是整了好久也没有把图片添加到指定的位置。最后改为同步请求,就可以了。
但是, why? 看来我们忽略了同步和异步的区别了。
同步:在同一个线程中执行,只有当当前任务完成后才会向下继续进行。
异步:异步请求是开启一个新的线程去完成一份工作,不会阻塞本线程的进行。
这个大概意思我们都知道,但是我们必须联想到它们对我们实际工作的影响,这因为我一开始使用的是异步请求,图片已经在内存中,但是我们的父页面已经绘制完成了,并且没有刷新,所以无法显示出来;但是同步请求不会这样,当我们从网络下载图片的时候,UI不会继续绘制的,只有等到网络操作完成后才继续,这样就可以把图片展示出来了。
但今天这个问题也不得不思考一个很重要的问题:如何快速地解决变成中遇到的问题?
为了解决这个问题好耗费了很长的时间,但是如果在实际的开发中是不会有这么多的时间去让我们去排bug,不然每天的任务完不成,更甚……
我们分析一下为什么解决这个问题耗费了如此长的时间,不知道同步和异步什么意思?不是。我想关键在于这些代码时从网络中找的,粘贴过来的,感觉他们写的就就对,但是正是这样的想法遮蔽了我们的眼睛,他们的代码在细节方面也许并不适合我们的项目,但是我们却忽略这这些细节。只要我们想一想同步、异步对我们程序的影响,这个问题自然很快的解决。