2015-06-22 116 views
0

我正在使用块在异步调用中下载图像。我知道如何在这样如何使用[nsthread detachNewThreadSelector]中的块

[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的选择器必须只带一个参数。

Source

+0

大声笑我也在想。太棒了。 –

+0

感谢@Gonji Dev的帮助 –

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); 
    }]; 
}); 
0
dispatch_async(dispatch_get_main_queue(), ^{ 
    //call your method here 
}); 

//在你的方法接受两个参数,以便detachNewThreadSelector传球只有一个参数。所以更好地利用上面的代码,并与更多的号码给你的方法的论据。

相关问题