有很多时候,我们需要获取到网络数据,但是由于是异步请求,所以总是在做关于请求下来的数据操作的时候不成功(例如:为空),比如,我们在做完网络请求下来后,直接把请求下来的某一个值给一个全局字符串,然后进行该字符串传值操作,总是会发现传过去的值是空的,而在打印台分明能打印出来网络数组给全局的字符串有值呀,这个问题就是异步请求导致的,因为咱们在做传值的时候,网络数据在子线程根本就没有请求下来,你做完跳转界面传值之后,他才请求下来给全局的字符串,所以出现控制台分明能打印出来字符串的内容就是传值为空的情况了,好了,废话不多说,直接上方法,其实很简单就是把异步变成同步就行了,但是由于是NSURLSession,所以我喜欢用这个方法:
由于这使用的是NSURLSession,不是AFN,所以block里面的线程是子线程,不是主线程,不能直接使用CFRunLoopGetCurrent,而是使用CFRunLoopStop(CFRunLoopGetMain())同步执行,以便于下个界面的传值等操作
网友评论