2013-04-11 34 views
0

我有以下For循环通过一个NSMutableArray该迭代并调用setImage方法:更新图像载入在For循环与GCD螺纹 - 的iOS

//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

global background queue是并发的,而不是串行的,这意味着它不保证排序。您可以创建一个自定义的串行队列:

dispatch_queue_t queue = dispatch_queue_create("com.example.MyQueue", NULL); 

并将其用于dispatch_async