Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone上Objective-C中的多线程是如何工作的?_Iphone_Objective C_Multithreading - Fatal编程技术网

iPhone上Objective-C中的多线程是如何工作的?

iPhone上Objective-C中的多线程是如何工作的?,iphone,objective-c,multithreading,Iphone,Objective C,Multithreading,我对iPhone开发中的“线程”概念感到困惑: 为什么线程是必要的/有用的 如何在Objective-C中使用线程 在objective c中需要多线程,因为有时需要函数/代码“在后台”运行(阅读:在另一个线程上)。例如(但不是明确地)您可能需要从internet下载大量数据(图片或视频) 在这种情况下,在“主”线程上运行下载将导致iphone在下载完成之前冻结。因此,您可以使用多线程下载数据,让iphone同时工作 在objective-c中有很多方法可以实现多线程。说实话,你需要自己查一下

我对iPhone开发中的“线程”概念感到困惑:

  • 为什么线程是必要的/有用的
  • 如何在Objective-C中使用线程

在objective c中需要多线程,因为有时需要函数/代码“在后台”运行(阅读:在另一个线程上)。例如(但不是明确地)您可能需要从internet下载大量数据(图片或视频)

在这种情况下,在“主”线程上运行下载将导致iphone在下载完成之前冻结。因此,您可以使用多线程下载数据,让iphone同时工作

在objective-c中有很多方法可以实现多线程。说实话,你需要自己查一下,我们不是来给你浇汤匙的


要查找的内容包括:
NSURLConnection
和方法
[自执行选择器:onThread:…]

更简单…如果您想并行运行某些方法(进程),可以使用线程…一个线程正在执行一项任务,而另一个线程正在执行其他任务。。。所以你可以使用线程,如果你需要做的事情时,另一件事正在做。。。 示例:线程1:向服务器发送请求 线程2:准备要发送的信息(图像、文本等)。
所以总的来说,这就是线程的目的最近,苹果公司建议程序员应该远离线程,使用一种更具优势、性能更好、更易于实现的替代解决方案;它是并发编程:

实现并发性的推荐方法是使用队列

对于那些只想在单独线程中执行方法/块的人,请使用以下代码:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
   [self longMehtod];
});

欲了解更多信息,请阅读苹果公司的

可能重复的问题,这些都是非常普遍的问题。。。你能具体说明你想要达到的目标吗?还是我们只是在为你做功课?@BradLarson你作为主持人指的是一个“没有建设性”的问题|这些都不是相互竞争的技术。线程是“并发编程”的一部分,需要完全理解线程才能成功构建多线程应用程序。在这种情况下,苹果的文档可能会有点误导,因为它们宣称“从线程迁移”等等。