• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 08:55:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我可以从 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 后的第二个变体将为 nil。



Best Answer-推荐答案


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

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap