Objective-C -我怎样才能创建一个objective-c协程?当我有一个通过按钮调用的IBAction时,它会冻结应用程序,直到IBAction完成检索数据(从网站)。我如何让它作为主应用程序的协程运行?
谢谢,克里斯蒂安·斯图尔特
发布于 2010-08-27 10:15:12
协程是一种特定的实现技术。你想做的是在不阻塞用户界面的情况下在后台工作。
在iOS和Mac上,有两种主要的技术可以做到这一点:运行循环和线程。
如果您只是通过HTTP URL下载一些数据,您可以开始下载,并告诉它在下载完成或有一些数据可供下载时通知您。URL下载将使用当前的run循环管理自己的并发性,您的应用程序将能够与用户交互。
如果需要执行自己的处理,可以使用NSOperationQueue和NSOperatipn、GCD (dispatch_*)或直接使用NSThread关闭后台线程。如果这样做,您需要了解并发编程、使用互斥锁(锁)和其他同步机制保护共享状态等。
对于简单的URL下载,使用NSURLDownload自己的并发支持。对于更多处理繁重的工作,可以尝试一下NSOperation。
发布于 2010-08-27 10:16:31
看看 .
您可能对NSURLConnection感兴趣,您可以设置URL并提供代理。当连接/下载完成时,会使用数据调用您的委托。
https://stackoverflow.com/questions/3580815
复制相似问题