首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取从NSInvocationOperation返回的结果

获取从NSInvocationOperation返回的结果
EN

Stack Overflow用户
提问于 2012-10-07 19:44:34
回答 1查看 409关注 0票数 1
代码语言:javascript
复制
- (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的图像。上面的代码有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-08 06:19:31

NSOperationQueue上的操作是在单独的线程上执行的。当您调用[downloadImageOperation result]时,该操作尚未完成执行,因此结果是nil

例如,可以在downloadImageSync:方法的末尾分配图像视图,但必须在主线程上完成:

代码语言:javascript
复制
dispatch_async(dispatch_get_main_queue(), ^{
    imageVIEW.image = imag;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12772246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档