在多线程操作中,有一个著名的错误,叫做“Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread”,一旦出现这个错误,程序会立即crashed。
这是由于,apple不允许程序员在主线程以外的线程中对ui进行操作(Bug?)
而笔者在一次http异步操作中也出现过这个错误。当时使用了NSOperation进行了http异步请求,然后使用kvo模式注册观察者,当数据下载完毕后,在主线程中接收下载完毕的通知,并在observeValueForKeyPath方法中使用[tableview reloadData]更新UI。
这样也导致了上述错误。
解决的方法是使用performSelectorOnMainThread进行ui的更新:
[self performSelectorOnMainThread:@selector(refresh) withObject:nil waitUntilDone:NO];
分享到:
相关推荐
NSOperation为tableviewcell加载数据
ios 多线程NSoperation
NSOperation的基本使用 1.NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤 先将需要执行的操作封装到一个NSOperation对象中 然后...
NSInvocationOperationViewController: NSOperation 的子类 NSInvocationOperation 线程的基本使用 NSBlockOperationViewController: NSOperation 的子类 NSBlockOperation 线程的基本使用 ...
Demo讲解了同步和异步的NSOperation的示例,更多的参见我的博客
一个NSOpration的例子,转载自raywenderlich
NSOperation NSOperationQueue demo 项目讲述了 NSOperation 和 NSOperationQueue 怎么使用。适合学习
一、NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤: (1)先将需要执行的操作封装到一个...
多线程加载图片
OC-NSOperation异步线程下载图片
Objective-C的NSOperation多线程类基本使用指南剖析.pdfObjective-C的NSOperation多线程类基本使用指南剖析.pdfObjective-C的NSOperation多线程类基本使用指南剖析.pdfObjective-C的NSOperation多线程类基本使用指南...
NSOperation和NSOperationQueue:其实出现得比GCD更早,但是GCD出现以后苹果在GCD的基础上对NSOperation进行了重写,使其对象化,符合了大众开发者的习惯。作为更高层的技术,NSOperation在处理依赖关系、控制各种...
iOS-多线程之NSOperation - iOS知识库1
iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
AFHTTPSessionOperation, 添加到 `AFHTTPSessionManager`的请求的`NSOperation` 子类 AFHTTPSessionOperation简介AFHTTPSessionOperation 是添加到 AFNetworking AFHTTPSessionManager的HTTP请求的NSOperation 子类...
主要介绍了iOS多线程应用开发中自定义NSOperation类的实例解析,代码基于传统的Objective-C,需要的朋友可以参考下
NSOperation 一、NSOperation 1.简介 NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作。 NSOperation本身是抽象基类,因此必须使用它的子类,使用NSOperation...
iOS开发 - 第04篇 - 网络 - 01 - NSOperation & 网络基础,对应博客地址:http://blog.csdn.net/nsryan