[英]Do you need to consider thread-safety using NSURLConnection? - iOS
我刚才一直想知道NSURLConnection如何正确地执行异步请求。
例如,假设您的应用程序中运行着几个上载过程,所有上载过程都是使用不同的NSURLConnection实例初始化的。 在上载过程中,包装器对象将调用NSURLConnection委托方法,例如:
-(void)connectionDidFinishLoading:(NSURLConnection*)connection;
假设在所有NSURLConnection包装器对象中共享同一个委托对象,该对象在数组中包含所有活动上载的列表,并且当对所有连接调用connectionDidFinishLoading时,它们将进入并从共享委托中的列表中将其自身删除宾语。
然后的问题是,当那些连接对象可以访问同一阵列时,您是否需要担心线程安全性? 还是所有这些委托方法都以不必担心线程安全的方式返回主线程?
诀窍是,在创建NSURLConnection的线程上调用委托方法,除非特别更改,否则它将成为主线程。 操作系统使用线程队列API之一按每个连接完成的顺序在该线程上反复调用委托方法。
使用NSURLConnection,它唯一真正需要传输的传输。 如果传输发生在主线程上,则在传输过程中,用户将无法与您的iOS应用程序进行交互。 处理结果花费的时间相对较短,但是如果要花费较长的时间,则由您决定是否在后台(在不同线程上)执行该处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.