gpt4 book ai didi

ios - 获取从 NSInvocationOperation 返回的结果

转载 作者:行者123 更新时间:2023-11-29 13:27:24 30 4
gpt4 key购买 nike

- (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 对象(如果它不是对象)。如果方法或调用未完成执行,则此方法返回 nil。

对于图像,我总是得到 nil。上面的代码有什么问题?

最佳答案

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

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

dispatch_async(dispatch_get_main_queue(), ^{
imageVIEW.image = imag;
});

关于ios - 获取从 NSInvocationOperation 返回的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12772246/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com