对之前的项目总结一下:
事情是这样的,我需要在定制Cell完成新闻类app的展示
虽然说SDWebImage提供了一个方法,异步加载图片到UIImageView上
但是,有些时候。需要的图片并不是需要铺满UIImageView
于是就抛弃了,后来想想还是挺二逼的。我可以在下面在铺一层边框UIImageView也能达到这个效果
于是乎,故作高大上,非要自己写。
后来看别人的方法,找到点感觉,还是写出来了,不过还是建立在网络良好的情况下
解决办法
主要要做到一下几个方面:
1.除了UI部分,所有的加载操作都在后台完成。这一点可以通过dispatch或者performSelectorInBackground或者NSOperationQueue来实现。见:在iOS开发中利用GCD进行多线程编程iOS开发中使用NSOperationQueue进行多线程操作
2.避免后台加载完成多个资源之后集中到达占用UI线程的处理时间太长。这一点可以通过NSOperationQueue来实现,将资源到UI的展现过程放在队列中逐个执行,且在每个操作完成之后进行强制等待,可以用usleep(int microSeconds)来解决。
3.重用cell。创建cell一般是很慢的,一定要重用,甚至为了performance,可以在view创建之初就创建足够多的cell在重用队列中。