次のようにGCDを使用して画像を次々と配置しようとしています
-(void)setUpImages {
NSArray *images = @[[UIImage imageNamed:@"blogger-icon.png"],
[UIImage imageNamed:@"gplus-icon.png"],
[UIImage imageNamed:@"facebok-icon.png"]
];
[images enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
dispatch_sync(dispatch_get_main_queue(), ^{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(80, idx * ((UIImage*)obj).size.height + idx*30 + 10, ((UIImage*)obj).size.width, ((UIImage*)obj).size.height)];
NSLog(@"index is %@",NSStringFromCGRect(imageView.frame));
[imageView setImage:(UIImage*)obj];
[self.view.layer addSublayer:imageView.layer];
sleep(1);
});
}];
}
dispatch_sync
ブロックが完了するまで待機し(最初の画像が画面に配置されます)、次に2番目の画像が表示され、3番目の画像が表示されるようにするため、使用しています。そして、すべてが現在メインスレッドで起こっています。
ただし、途中でデッドロックが発生しているようで、ロジックがいくつかの点で間違っています。
この状況を理解するには助けが必要です。助けてください。