gpt4 book ai didi

iOS 如何从 block 中获取变量值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:42:32 24 4
gpt4 key购买 nike

我可以从 block 中获取变量值吗?

    - (Params *) getParams {
__block Params* params = nil;
//make post, get requests
[JSONHTTPClient getJSONFromURLWithString:@"http://www.blankspot.ru/api/getinterval"
params:nil
completion:^(id json, JSONModelError *err) {
NSLog(@"json = %@", json);
NSLog(@"Error = %@", err );
NSDictionary* json1 = json;
NSLog(@" %@ ob ", [json1 objectForKey:@"success"]);
params = [[Params alloc] initWithDictionary:json1 error:&err];

NSLog(@"params123 = %@", params); // is not null
}];

NSLog(@"params123 = %@", params); //this is null
return params;
}

在第一个变体 NSLog 中查看非空值,但 block 后的第二个变体将为零。

最佳答案

这是因为 getJSONFromURLWithString 是异步的(它使用 dispatch_async 进行请求调用),这意味着它将在另一个线程上调用,而当前线程将继续运行.

您的 NSLog 显示 nil,因为由于调用的异步性质,该 block 可能在到达 NSLog 行后的某个时间执行(因为 URL 请求需要一些时间才能完成并且不会立即完成)

关于iOS 如何从 block 中获取变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364718/

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