Objective-C 协程

3

Objective-C - 我该如何创建一个 Objective-C 协程?当我有一个由按钮调用的 IBAction 时,它会冻结应用程序,直到 IBAction 完成从网站检索数据。我如何将其作为协程运行到主应用程序中?

谢谢, Christian Stewart

2个回答

1

协程是一种特定的实现技术。你想要做的是在后台执行工作,而不会阻塞用户界面。

iOS和Mac OS X上有两种主要的技术可以实现这一点:运行循环和线程。

如果你只是通过HTTP URL下载一些数据,你可以启动下载并告诉它在完成或有数据可用时通知你。URL下载将使用当前运行循环来管理自己的并发性,你的应用程序将能够与用户交互。

如果你需要执行自己的处理,你可以使用NSOperationQueue和NSOperatipn、GCD(dispatch_*)或直接使用NSThread来启动一个后台线程来执行它。如果你这样做,你需要了解并发编程,使用互斥锁(锁)和其他同步机制来保护共享状态等。

对于仅仅是URL下载,使用NSURLDownload自己的并发支持即可。对于更加处理密集型的工作,可以尝试使用NSOperation。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接