gpt4 book ai didi

ios - AFNetworking 能否同步返回数据(在 block 内)?

转载 作者:IT王子 更新时间:2023-10-29 07:37:49 26 4
gpt4 key购买 nike

我有一个使用 AFJSONRequestOperation 的函数,我希望仅在成功后返回结果。你能指出我正确的方向吗?我对 block 和 AFNetworking 仍然一无所知。

-(id)someFunction{
__block id data;

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id json){
data = json;
return data; // won't work
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){

}];



NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation: operation];

return data; // will return nil since the block doesn't "lock" the app.
}

最佳答案

要在操作完成之前阻止主线程的执行,您可以在将其添加到操作队列后执行[operation waitUntilFinished]。在这种情况下,您不需要 block 中的 return;设置 __block 变量就足够了。

也就是说,我强烈反对将异步操作强制用于同步方法。有时很难动脑筋,但如果有任何方法可以将其构造为异步的,那几乎肯定是可行的方法。

关于ios - AFNetworking 能否同步返回数据(在 block 内)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7969865/

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