我很困惑Synchronous NSUrlConnection和ASynchronous NSUrlConnection有什么区别?是同步还是异步?如果我们在connectionDidFinishLoading方法中使用detachNewThreadSelector,那它是ASynchronous NSUrlConnection吗?这是最好的方法吗?任何教程......
Ale*_*lds 22
同步意味着您触发NSURLConnection请求并等待它完成.
异步意味着您可以在NSURLConnection下载数据时触发请求并执行其他操作.
哪个是"最好的"?
同步非常简单:你设置它,触发它,然后等待数据返回.但是您的应用程序位于那里并且在下载所有数据,发生一些错误或请求超时之前什么都不做.如果您处理的不仅仅是少量数据,那么您的用户将坐在那里等待,这将无法获得良好的用户体验.
异步需要更多的工作,但是当请求执行其操作时,您的用户可以执行其他操作,这通常是可取的.您可以设置一些委托方法,以便在数据进入时跟踪数据,这对跟踪下载进度非常有用.对于大多数使用情况,这种方法可能更好.
您可以使用执行同步和异步请求NSURLConnection.Apple的文档清楚地解释了后一种方法所需的两种方法和委托方法.
Ste*_*ton 10
您似乎正在混淆同步/异步连接和线程.在我的应用程序中,我使用异步连接作为线程的替代方法.
假设您要下载大文件而不会导致UI冻结.您有两个基本选项:
异步连接.你从+ connectionWithRequest:delegate:(或其他一个非自动释放选项)开始,它下载文件的位,在有趣的事情发生时调用你的代表.runloop仍然存在,因此您的UI保持响应.当然,您必须小心您的代表不会超出范围.
同步.您开始连接+ sendSynchronousRequest:returningResponse:error:但代码等待直到下载完成.您真的需要生成一个新线程(或Cocoa支持的更高级别的线程操作之一)或UI将阻止.
哪个选项"最佳"或最不痛苦取决于应用程序的体系结构以及您要实现的目标.如果您需要为长时间运行的进程创建一个线程,您可以使用第二个选项.一般来说,我会说第一个选项最简单.
这一切都在Apple的开发者网站上有很好的记录.
| 归档时间: |
|
| 查看次数: |
8060 次 |
| 最近记录: |