繁体   English   中英

您是否需要考虑使用NSURLConnection进行线程安全? -iOS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM