Я пытаюсь поместить изображение один за другим, используя НОД как следующийЯ думаю, что я получаю в тупик, но не совсем понимаю, почему
-(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
, потому что я хочу, он будет ждать, пока его блок не будет сделано (первое изображение помещается на экран), тогда будут отображаться и другие изображения. И теперь все происходит в основном потоке.
Однако, похоже, я встаю в тупик посередине, и моя логика в некоторых случаях ошибочна.
Мне нужна помощь, чтобы понять эту ситуацию. Пожалуйста помоги.
«Я использую dispatch_sycn, потому что я хочу, чтобы он подождал, пока его блок не будет выполнен» Также, если вы не используете dispatch_sync, вы ждете, пока не будет выполнен каждый блок, использование GCD здесь не нужно и причина тупика (см. Ответ Петронеллы). –