我正致力于从远程服务器实现优化的图像下载机制。
我想到了两种不同的方法。
1
。创建一个新线程并在该单个线程中以异步方式下载所有图像。
2。创建线程以下载每个图像。假设我想下载50个图像,那么将有50个线程下载这些图像。
哪种方法在设计和优化方面更好?
谢谢,
吉姆。
答案 0 :(得分:1)
你的解决方案都有陷阱。
1)只有一个帖子意味着你只能下载一张图片吗?这似乎效率低下
2)出于同样的原因,有一次下载是一个坏主意,有50个图像同时下载是一个糟糕的性能想法,并将减慢每一个。还要考虑下载数据对于系统而言资源昂贵的线程(网络I / O,磁盘I / O等)。
我可以建议不要重新发明轮子并使用NSOperationQueue作为队列的cocoa / cocoa touch实现,这意味着你可以添加多少操作(在你的情况下,操作是图像下载)但您可以指定最大并发操作数(通过maxConcurrentOperationCount
属性)。
NSOperationQueue处理所有多线程的东西,从iOS 4开始,它使用GCD来执行操作。