Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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 类,该类在线程中处理任务_Iphone_Objective C_Multithreading - Fatal编程技术网

Iphone 类,该类在线程中处理任务

Iphone 类,该类在线程中处理任务,iphone,objective-c,multithreading,Iphone,Objective C,Multithreading,我想创建一个类,只要它的一个实例是活动的,它就可以让一个线程(工作线程)继续运行,当有人对它调用一个方法时-performTaskWithData:(NSData*)data-它就应该在它的工作线程中处理这个数据。 如果在执行操作时发送了其他数据,则应将此新数据/操作排队,直到完成前一个处理 我需要这个helper类的每个实例包含一个工作线程(即,同一个线程应该处理所有处理) 我该怎么做呢? NSRunLoop?同步对正在传递的数据块的访问?您可以直接使用NSThreads和run循环来执行此操

我想创建一个类,只要它的一个实例是活动的,它就可以让一个线程(工作线程)继续运行,当有人对它调用一个方法时-
performTaskWithData:(NSData*)data
-它就应该在它的工作线程中处理这个数据。
如果在执行操作时发送了其他数据,则应将此新数据/操作排队,直到完成前一个处理

我需要这个helper类的每个实例包含一个工作线程(即,同一个线程应该处理所有处理)

我该怎么做呢?

NSRunLoop?同步对正在传递的数据块的访问?

您可以直接使用NSThreads和run循环来执行此操作。但是,我会考虑使用S,每个类中的一个实例,并将队列的最大并发设置为1。您的
performTaskWithData:
只需将
NSOperation
子类的一个新实例添加到队列中即可。

从iOS4开始,为多线程编程提供了迄今为止最简单、最强大的接口


如果你是一个注册开发者,去看一些2010年的WWDC视频。一开始它很吓人,但实际上它非常简单而且很好。

这能保证每个操作都使用相同的线程吗?不,它保证任务一定是按顺序执行的,但不一定是在相同的线程上。确切的线程不再重要。与上面的问题相同-这是否保证对队列中的每个操作使用相同的线程?您不必考虑这个问题。您有排队的进程,您可以讨论这些进程。去研究一下。