我有一个串行队列,其中包含加载和图像两种方法,然后,一旦完成,将图像添加到子视图中。这些图像位于 NSMutableArray 中,因此我正在迭代 For 循环以将它们加载如下:
dispatch_queue_t queue = dispatch_queue_create("com.example.MyQueue", NULL);
for (int i =0; i<=[pictureThumbnailArray count]-1; i++) {
dispatch_async(queue, ^{
NSLog(@"Thumbnail count is %d", [pictureThumbnailArray count]);
finishedImage = [self setImage:[pictureThumbnailArray objectAtIndex:i]:i];
if (finishedImage !=nil) {
dispatch_async(dispatch_get_main_queue(), ^ {
[self.view addSubview:finishedImage];
});
}
});
}
问题是图像似乎是随机加载的。我想要实现的是 For 循环的每次迭代在下一次迭代开始之前运行并完成 - 这样图像每次都应该以相同的方式加载。
谁能建议实现这一目标的最佳方法 - 我想我可能需要同步 setImage 方法(队列中的第一个方法)?
变成 :
for (int i =0; i<=[pictureThumbnailArray count]-1; i++) {
NSLog(@"Thumbnail count is %d", [pictureThumbnailArray count]);
finishedImage = [self setImage:[pictureThumbnailArray objectAtIndex:i]:i];
if (finishedImage !=nil) {
dispatch_async(dispatch_get_main_queue(), ^ {
[self.view addSubview:finishedImage];
});
}
}
});