0
回答
线程中不执行delegate方法的原因
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

如果我们将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一直处于工作状态。





原文链接:http://blog.csdn.net/favormm/article/details/7557543
<无标签>
举报
长平狐
发帖于5年前 0回/128阅
顶部