2015-06-22 3 views
0

Я использую блок для загрузки изображений в асинхронном вызове. Я знаю, как использовать блок таким образомКак использовать блок в [nsthread detachNewThreadSelector]

[self getimage:url block:^(UIImage *img) 
{ 
    passblock(img); 
}]; 

, но я не знаю, как использовать блок в этом

[NSThread detachNewThreadSelector:@selector(getimage:block:) toTarget:self withObject:string]; 

Когда этот блок будет получить обратный вызов в NSThread и как справиться с этим.

Делая эту ошибку, что я получаю плохо Access

-(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

lol Я тоже думал. Великий Поймать. –

+0

спасибо за помощь @Gonji Dev –

0

Использование НОД вместо:

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 передавая только один аргумент .so лучшего использования выше коды и вызов метода с большим числом аргументов.

Смежные вопросы