菜鸟教程小白 发表于 2022-12-13 08:55:54

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


                                            <p><p>我可以从 block 中获取变量值吗?</p>

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

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

    NSLog(@&#34;params123 = %@&#34;, params); //this is null
    return params;
   }
</code></pre>

<p>在第一个变体 NSLog 中查看非空值,但 block 后的第二个变体将为 nil。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是因为 <code>getJSONFromURLWithString</code> 是异步的(它使用 <code>dispatch_async</code> 进行请求调用),这意味着它将在另一个线程上调用,而当前线程将继续运行. </p>

<p>您的 <code>NSLog</code> 显示 <code>nil</code> 因为由于调用的异步性质,该 block 可能在到达 <code>NSLog</code> 行之后的某个时间执行(因为 URL 请求需要一些时间才能完成并且不是立即的)</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS如何从 block 中获取变量值?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25364718/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25364718/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS如何从 block 中获取变量值?