我想在自己的应用程序项目中学习GCD,但我遇到了问题。我认为很容易,但我不知道如何解决它。所以我有两种方法:
- (void)viewDidLoad
{
[super viewDidLoad];
queue = dispatch_queue_create("com.fe.effect.load", NULL);
__block UIImage *th;
dispatch_sync(queue, ^{
th = [self doThumbWithImage:thumbnail andTag:1];
UIButton *btn1 = [self buttonWithFrame:CGRectMake(0, 0, 200, 100) andBackgroundImage:th andSelector:@selector(doEffect:) andTag:1];
[self.view addSubview:btn1];
});
dispatch_sync(queue, ^{
th = [self doThumbWithImage:thumbnail andTag:2];
UIButton *btn2 = [self buttonWithFrame:CGRectMake(0, 100, 200, 100) andBackgroundImage:th andSelector:@selector(doEffect:) andTag:2];
[self.view addSubview:btn2];
});
}
和2方法:
-(UIImage *)doThumbWithImage:(UIImage *)_img andTag:(int)_tag {
ImageProcessing *ip = [[ImageProcessing alloc] initWithImage:_img andTag:_tag];
[ip doImageProcessing];
_img = ip.image;
ip = nil;
return _img;
}
在doThumbWithImage:andTag:
我已经ImageProcessing
上课了,我用thumbnail
个对象做了一些事情。
当我使用dispatch_sync
时,此操作的时间与没有GCD的时间相同。当我使用dispatch_async
时,我看不到按钮的缩略图。我知道有些事情是错的,但我不知道是什么。
我该如何修理?
谢谢你的帮助。
答案 0 :(得分:1)
您可能需要在主线程中执行addSubview。您可以嵌套dispatch_async调用来处理它。