iphone – NSURLConnection是否阻止主 UI线程

iphone – NSURLConnection是否阻止主 UI线程,第1张

概述当我们滚动到屏幕上时,我正在下载表视图单元格中的图像.出于UX的原因,我开始下载图像 – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath.我不要等到表视图完成滚动.设置表格视图单元格后,我开始下载我还没有的图像.但是,在表视图停止移动之前,它们似 当我们滚动到屏幕上时,我正在下载表视图单元格中的图像.出于UX的原因,我开始下载图像 – (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath.我不要等到表视图完成滚动.设置表格视图单元格后,我开始下载我还没有的图像.但是,在表视图停止移动之前,它们似乎没有完全下载.一旦它停止移动,图像几乎立即下载.

无论如何使用NSURLConnection,它没有被主UI线程阻止?或者,是否有一种方法可以在滚动表格视图时非常快速地下载这些图像.

**编辑**

为了证明NSURLConnection较慢,我使用NSThread在另一个线程中分离新的选择器.然后我下载数据并回调主线程,在那里我创建一个UIImage并在表视图中显示它.此方法的工作速度更快.

就个人而言,我认为NSURLConnection被抛入到UItableVIEw滚动阻止它的事件循环中.

解决方法 阅读 NSDefaultRunLoopMode vs NSRunLoopCommonModes以获得有关所有下载委托通知排队的原因的详细说明,但是在使用主线程更改时从下载时进行下载:

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request                                                              delegate:self];

对此:

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request                                                              delegate:self                                                      startImmediately:NO];[connection scheduleInRunLoop:[NSRunLoop currentRunLoop]                      forMode:NSRunLoopCommonModes];[connection start];
总结

以上是内存溢出为你收集整理的iphone – NSURLConnection是否阻止主/ UI线程全部内容,希望文章能够帮你解决iphone – NSURLConnection是否阻止主/ UI线程所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1086028.html

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

发表评论

登录后才能评论

评论列表(0条)

保存