ロードとイメージの 2 つのメソッドを含むシリアル キューがあり、完了したらイメージをサブビューに追加します。画像は 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];
});
}
}
});