如果我们将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一直处于工作状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)