iOS,NSURLConnection:在不同的线程上委托回调?

iOS,NSURLConnection:在不同的线程上委托回调?,第1张

概述我怎样才能让NSURLConnection从不同的线程而不是主线程调用它的委托方法.我正在尝试使用scheduleInRunLoop:forMode:但似乎没有做我想要的. 我必须下载一个大文件,它会频繁地中断主线程,以至于正在发生的一些渲染开始变得不稳定. NSURLRequest * request = [NSURLRequest requestWithURL:url];NSURLConne 我怎样才能让NSURLConnection从不同的线程而不是主线程调用它的委托方法.我正在尝试使用scheduleInRunLoop:forMode:但似乎没有做我想要的.

我必须下载一个大文件,它会频繁地中断主线程,以至于正在发生的一些渲染开始变得不稳定.

NSURLRequest * request = [NSURLRequest requestWithURL:url];NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];NSRunLoop * loop = [NSRunLoop currentRunLoop];NSLog(@"loop mode: %@",[loop currentMode]);[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];[connection start];

我没有看到的另一件事是“模式”只记录了两种模式,所以没有多少真正要测试.

有任何想法吗?

谢谢

解决方法 有几种选择:

>在执行委托方法时,请使用dispatch_async.
>在后台线程上启动计划连接.

你可以这样做:

// all the setup comes heredispatch_async(dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAulT,0),^{    NSRunLoop *loop = [NSRunLoop currentRunLoop];    [connection scheduleInRunLoop:loop forMode:NSRunLoopCommonModes];    [loop run]; // make sure that you have a running run-loop.});

如果要保证正在运行的线程,请适当地替换对dispatch_get_global_queue()的调用.

总结

以上是内存溢出为你收集整理的iOS,NSURLConnection:在不同的线程上委托回调?全部内容,希望文章能够帮你解决iOS,NSURLConnection:在不同的线程上委托回调?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存