我正在尝试使用 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
,因为我希望它会等到它的块完成(第一张图像被放置在屏幕上)然后第二张图像将是,所以第三张图像会。现在所有的事情都在主线程上发生。
但是,似乎我在中间陷入了僵局,并且我的逻辑在某些时候是错误的。
我需要帮助来了解这种情况。请帮忙。