swift开发笔记19 在网络请求结束后更新UI
来源:互联网 发布:易观智库外卖数据 编辑:程序博客网 时间:2024/05/01 20:14
更新UI是必须回到主线程的,如果你是在网络请求的子线程中做操作,然后想更新UI的操作,那么需要把更新操作加入主队列,主队列的任务都是在主线程中执行的,这时需要用到GCD技术。
一般只需要这样写就可以
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { //需要长时间处理的代码 dispatch_async(dispatch_get_main_queue(), { //需要主线程执行的代码 })})参考:http://www.starming.com/index.php?v=index&view=24
其实只要用这个异步回调主线程就可以:
dispatch_async(dispatch_get_main_queue(),{
// do something
self.orgnameLabel.text = "测试"
})
如果不这样会报异常:This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.
并且更新UI不成功。
完整例子:
@IBAction func click(sender: AnyObject) { self.imageView.image = nil let imgkURL = NSURL(string : STR_URL) let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT dispatch_async(dispatch_get_global_queue(priority, 0), { let imgData = NSData(contentsOfURL : imgkURL!) let img = UIImage(data : imgData!) dispatch_async(dispatch_get_main_queue(), { self.imageView.image = img }) }) }
1 0
- swift开发笔记19 在网络请求结束后更新UI
- GCD实现单个页面多个网络请求,需要监听所有网络请求结束后刷新UI的处理
- iOS网络开发:多个异步网络请求结束后再进行某些操作的方法
- 更新Xcode7后网络请求数据问题?
- 在 swift中处理网络请求
- 在 swift中处理网络请求
- swift开发网络篇 - post 请求
- 【Swift】Alamofile网络请求数据更新TableView的坑
- 在子线程结束后更新主界面按钮状态
- 网络请求后关于刷新界面UI的问题
- Swift之网络请求
- swift 网络请求 2
- Swift网络请求
- swift 网络请求
- Swift - 网络请求
- swift 网络请求
- swift网络请求封装
- 关于更新Xcode7后网络请求数据问题?
- js弹出框、对话框、提示框、弹窗总结
- Linux下暴力破解工具Hydra详解
- RESULT_OK cannot be resolved to a variable
- CountDownTimer倒计时器的使用
- 简历7大内容可以模糊写!
- swift开发笔记19 在网络请求结束后更新UI
- HDU 3339 In Action 最短路+01背包
- Jenkins学习笔记(三) master/slave的初步认识
- 出国旅游探亲的公证手续
- 不同类型常量测试
- HTML常用标签及其全称
- 选卡切换+侧滑
- QT中吧QString类型转换为int类型
- [javase学习笔记]-9.3 子父类中成员变量特征体现