线程中不执行delegate方法的原因
来源:互联网 发布:mac上怎么移动文件 编辑:程序博客网 时间:2024/05/16 08:12
如果我们将NSURLConnection放在线程中,是不是delegate方法总是不会触发?原因就是由于线程结束了。解决方法就是让线程在数据返回之前不结束。
1。可以在线程中加一个timer防止结束, 这方法很傻
2。可以把NSURLConnection实例放在线程中的runloop中,如下面的代码,在NSOperator的start方法中将其加入runloop
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:req delegate:self]; if (conn) { NSPort* port = [NSPort port]; NSRunLoop* rl = [NSRunLoop currentRunLoop]; // Get the runloop [rl addPort:port forMode:NSDefaultRunLoopMode]; [conn scheduleInRunLoop:rl forMode:NSDefaultRunLoopMode]; }
3。防止线程结束
while(!isFinished) { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; }
其原因都是让runloop一直处于工作状态。
- 线程中不执行delegate方法的原因
- 线程不执行delegate,防止线程结束
- onActivityResult方法不执行的一个原因
- UITableView代理方法不执行的原因
- UITableView的代理方法viewForHeaderInSection不执行的原因
- UITableView的代理方法viewForHeaderInSection不执行的原因
- ios UITableView的cellForRowAtIndexPath方法不执行的原因
- Hadoop Reducer类中的reduce方法不执行的原因
- Fragment的OnResume()方法不执行原因及解决办法
- 索引不执行的原因
- @Scheduled不执行的原因
- javascript不执行的原因
- Activity跳转过程中OnActivityForResult()不执行的原因。
- UWP-ListView中ItemClick不执行的原因
- android getView方法不执行的一个原因是布局文件中没有给列表显示的位置
- android getView方法不执行的一个原因是布局文件中没有给列表显示的位置
- Java中停止线程执行的方法
- Java中停止线程执行的方法
- C# 操作数据库(1)
- C#中ref和out
- 解决img的src在firefox,IE7-8下,无法动态加载的问题
- flex传递参数的方式
- 机房收费系统总结之登录功能实例解析抽象工厂+配置文件
- 线程中不执行delegate方法的原因
- HTML代码大全
- android Alertdialog 自定义
- JVM GC算法
- page 31 TimerEvent.TIMER
- 如何破解团队的困境?
- 一个完整的数据库备份创建与删除******使用存储过程
- Activity的生命周期,BACK键和HOME对生命周期的影响
- 工厂模式(简单工厂、工厂和抽象工厂) C++