- (void)viewDidLoad
{
NSOperationQueue *operationQueue = [[NSOperationQueue alloc]init];
NSInvocationOperation *downloadImageOperation = [[NSInvocationOperation alloc] initWithTarget:[ImageDownloader getInstance]
selector:@selector(downloadImageSync:)
object:@"image url"];
[operationQueue addOperation:downloadImageOperation];
UIImage *imag = [downloadImageOperation result]; // image is always nil here
imageVIEW.image = imag;
}返回调用或方法的结果。-(Id)结果返回值方法或包含返回值的NSValue对象返回的对象(如果它不是对象)。如果方法或调用未完成执行,则此方法将返回0.。
我总是得到nil的图像。上面的代码有什么问题?
发布于 2012-10-08 06:19:31
NSOperationQueue上的操作是在单独的线程上执行的。当您调用[downloadImageOperation result]时,该操作尚未完成执行,因此结果是nil。
例如,可以在downloadImageSync:方法的末尾分配图像视图,但必须在主线程上完成:
dispatch_async(dispatch_get_main_queue(), ^{
imageVIEW.image = imag;
});https://stackoverflow.com/questions/12772246
复制相似问题