作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直想知道异步请求如何与 NSURLConnection 一起工作。
例如,假设您的应用程序中正在运行多个上传进程,所有进程都使用 NSURLConnection 的不同实例进行初始化。作为上传过程,您的包装器对象会调用 NSURLConnection 委托(delegate)方法,例如:
-(void)connectionDidFinishLoading:(NSURLConnection*)connection;
假设在您所有的 NSURLConnection 包装器对象中共享同一个委托(delegate)对象,该对象具有一个数组中所有事件上传的列表,并且当为您的所有连接调用 connectionDidFinishLoading 时,它们进入并从该列表中删除自己共享委托(delegate)对象。
那么问题是,当这些连接对象可以访问同一个数组时,您是否需要担心线程安全?还是所有这些委托(delegate)方法都以您不必担心线程安全的方式返回到主线程?
最佳答案
诀窍是在您创建 NSURLConnection 的线程上调用委托(delegate)方法,除非您特别更改它将成为主线程。操作系统使用线程队列 API 之一,按照每个连接完成的顺序在该线程上一遍又一遍地调用委托(delegate)方法。
使用 NSURLConnection 它只是真正需要线程化的传输。如果传输发生在主线程上,那么在传输期间用户将无法与您的 iOS 应用程序交互。处理结果需要相对较短的时间,但如果需要很长时间,是否选择在后台(在不同的线程上)进行处理则取决于您。
关于ios - 使用 NSURLConnection 是否需要考虑线程安全? - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319370/
我是一名优秀的程序员,十分优秀!