iOS 中怎么保证UITableView中的Cell的图片是按顺序加载的?

tableview中的cell, 一个cell的frame和手机屏幕的大小一致,加载图片的时候会出现,先加载别的cell的图片而不是第一个,我想做到按顺序一个一个加载.
目前我是用YYKit中的图片扩展来加载图片的.
请问怎么做?有什么思路吗?谢谢

阅读 4.8k
5 个回答

GCD信号量应该可以解决,将异步线程强制转化同步线程,加载完上一个图片发送信号显示下一个。解释如下:
在GCD中提供了一种信号机制,也可以解决资源抢占问题(和同步锁的机制并不一样)。GCD中信号量是dispatch_semaphore_t类型,支持信号通知和信号等待。每当发送一个信号通知,则信号量+1;每当发送一个等待信号时信号量-1,;如果信号量为0则信号会处于等待状态,直到信号量大于0开始执行。根据这个原理我们可以初始化一个信号量变量,默认信号量设置为1,每当有线程进入“加锁代码”之后就调用信号等待命令(此时信号量为0)开始等待,此时其他线程无法进入,执行完后发送信号通知(此时信号量为1),其他线程开始进入执行,如此一来就达到了线程同步目的。

说实话,这样的需求比较奇葩。

如果使用的是异步加载的办法,那么肯定会先显示下载好的图片,越大的图片显示越慢.
如果是同步进行的就不会存在这种问题

第三方的图片加载应该都异步(考虑性能问题)。异步是无序的
还有tableview是缓存池机制。不可出现,还没有出现的cell先加载了。应该你是别的问题

将图片做成下载的队列,队列并发数为1,下载成功了就设置相应的图片,这样就是一个一个的有序加载了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题