我正在使用一个块来在asynchronus调用中下载图像。我知道如何以这种方式使用块
[self getimage:url block:^(UIImage *img)
{
passblock(img);
}];
但我不知道如何在这个
中使用块 [NSThread detachNewThreadSelector:@selector(getimage:block:) toTarget:self withObject:string];
当这个块在nsthread中获得回调以及如何处理它时。
执行此错误时我得到的是错误的访问
-(void)getimage:(id)strimage block:(imageblock)block
{
NSData *data=[NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:strimage]];
UIImage* image = [UIImage imageWithData:strurl];
block(image);
}
任何帮助将不胜感激。
答案 0 :(得分:1)
传递给detachNewThreadSelector的选择器必须只有一个参数。
答案 1 :(得分:0)
改为使用GCD:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self getimage:url block:^(UIImage *img) {
// You might want to use dispatch_async(dispatch_get_main_queue()) here
passblock(img);
}];
});
答案 2 :(得分:0)
dispatch_async(dispatch_get_main_queue(), ^{
//call your method here
});
//在你的方法中取两个参数,使detachNewThreadSelector只传递一个参数。更好地使用上面的代码并用更多的参数调用你的方法。