iOS如何从 block 中获取变量值?
<p><p>我可以从 block 中获取变量值吗?</p>
<pre><code> - (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 ", );
params = [ initWithDictionary:json1 error:&err];
NSLog(@"params123 = %@", params); // is not null
}];
NSLog(@"params123 = %@", 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]