gpt4 book ai didi

objective-c - iOS 5 - 从异步调用的方法中捕获返回值

转载 作者:行者123 更新时间:2023-12-04 02:45:31 25 4
gpt4 key购买 nike

我有一个返回对象的方法 fetchFromWeb。我想从 GCD 异步调用这个方法。有人可以解释我如何从异步调用的方法中捕获返回值吗?

或者,我应该设置对象值,然后设置某种通知,而不是显式地从这个方法中获取返回值吗?

这是我所拥有的,谢谢!

        dispatch_async(kBGQueue, ^{


NSData *data = [NSData dataWithContentsOfURL:kURL];
[self performSelectorOnMainThread:@selector(fetchFromWeb:)
withObject:data
waitUntilDone:YES];

//Need to get the return value from method fetchFromWeb in selector....

});

最佳答案

dataWithContentsOfURL 仅适用于文件 URL,不适用于 Web URL。它不是异步的。即使您使用 GCD 将它发送到它自己的线程,这也不是正确的方法。

如果你需要上网,你需要使用 NSURLConnection。

使用 + (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue )queue completionHandler:(void (^)(NSURLResponse, NSData*, NSError*))handler

您最初走在正确的轨道上——您不需要方法的返回值。让完成处理程序 block 使用您收到的数据设置一个属性(ivar),并且按照您的建议,在 block 的末尾使用通知来提醒您它已完成。该通知可以触发访问该属性的方法,您可以获取数据对象。

关于objective-c - iOS 5 - 从异步调用的方法中捕获返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743792/

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