【发布时间】:2016-02-18 06:48:54
【问题描述】:
我有一个类(假设名为“A”),其中包含一个带有NSURLSessionDataTask 的方法和一个NSDictionary 属性。我将 JSON 响应添加到 NSDictionary 属性。在我的 mainViewController 中,我创建了一个 A 类对象并调用了该方法。现在在mainViewController 中,我需要访问A 类的NSDictionary。现在的问题是在调用A 类中的方法之后,我需要在访问NSDictionary 之前添加[NSThread sleepForTimeInterval:5.0]; 或者字典是无效的。我在访问字典之前尝试过这个,但它没有用
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{
[requestObject requestAPIMethod];
});
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
// access the dictionary
任何帮助将不胜感激,谢谢。
P.S : 我在 SO 上遇到过类似的问题,但没有找到任何线索。
【问题讨论】:
-
您应该将完成处理程序块传递给类 A 中的方法。检索到响应后,使用返回的数据调用完成处理程序。
-
从不在主线程中休眠。 从不。
-
@Avi 我知道 avi,只是想确保代码运行,然后再调查一下。还是谢谢你。
-
@Paulw11 - 谢谢你的提示,我已经写了答案,如果我错过了什么,请告诉我。
标签: ios objective-c grand-central-dispatch semaphore dispatch-async