我有以下For循环,它循环遍历NSMutableArray并调用setImage方法:
//Code to iterate through pictures and create ImageView class for each one.
for (int i =0; i<=[pictureThumbnailArray count]-1; i++) {
NSLog(@"Thumbnail count is %d", [pictureThumbnailArray count]);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) {
[self setImage:[pictureThumbnailArray objectAtIndex:i]:i];
});
}
setImage方法在图片上设置各种参数,最后将其添加到主线程上的子视图中:
dispatch_sync(dispatch_get_main_queue(), ^(void) {
[self.view addSubview:onePicture];
});
问题是图像随机出现在屏幕上,而不是逐个加载。可以建议我如何改进这个吗?
感谢。
答案 0 :(得分:0)
global background queue是并发的,而不是串行的,这意味着它不保证排序。您可以创建一个自定义串行队列:
dispatch_queue_t queue = dispatch_queue_create("com.example.MyQueue", NULL);
并在dispatch_async
。