gpt4 book ai didi

ios - 即使使用 __block 也无法保留数据

转载 作者:行者123 更新时间:2023-11-29 01:05:53 26 4
gpt4 key购买 nike

我使用 AFNetworking 库已经有一段时间了,我刚刚遇到了一个问题。我使用了以下代码,它使用 GET 函数从远程 PHP 文件接收数据。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
__block NSDictionary *data = nil;

[manager GET:@"..." parameters:nil success:^(NSURLSessionTask *task, id responseObject) {
data = responseObject;
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];

_objects = [[data allKeysForObject:@"type"]mutableCopy];

如您所见,我创建了一个本地 NSDictionary 变量并将其设置为 nil,正如另一篇 Stack Overflow 帖子告诉我的那样。括号内,一切看起来都很好;数据已满。然而,在括号之外,data 完全是空的。有什么想法为什么这可能行不通吗?提前致谢。

编辑正如 matiboo 在评论中善意指出的那样,我意识到 AFNetworking 运行在与主线程不同的线程上,而主线程恰好在其他所有线程之前执行。

但是,我仍然不知道如何解决这个问题。我应该创建一个函数来处理这个问题吗?

最佳答案

您的 _object 变量应该在成功 block 内。因为return block会在后台线程执行,需要一定的时间,所以命令_objects = [[data allKeysForObject:@"type"]mutableCopy];会在return命令之前执行阻止(成功或失败)。因此,数据仍然为零。

关于ios - 即使使用 __block 也无法保留数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36370440/

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