Iphone 如何在后台执行任务? 作为一个众所周知的事实,处理器重的工作需要在非UI线程上,让我们把它看作后台线程。现在在我的例子中,我正在解析来自提要的数据,然后将这些解析后的数据插入到数据库中。我想在我的后台线程上处理这个“数据解析”,保持UIthread响应用户交互。现在我的想法是在应用程序启动后立即开始解析

Iphone 如何在后台执行任务? 作为一个众所周知的事实,处理器重的工作需要在非UI线程上,让我们把它看作后台线程。现在在我的例子中,我正在解析来自提要的数据,然后将这些解析后的数据插入到数据库中。我想在我的后台线程上处理这个“数据解析”,保持UIthread响应用户交互。现在我的想法是在应用程序启动后立即开始解析,iphone,objective-c,ios,multithreading,Iphone,Objective C,Ios,Multithreading,我完全不知道如何在IOS中处理线程。 请有人帮帮我。如果你再搜索一点,你会发现一些东西。。。这是免费的: // Declare the queue dispatch_queue_t workingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(workingQueue, ^{

我完全不知道如何在IOS中处理线程。


请有人帮帮我。

如果你再搜索一点,你会发现一些东西。。。这是免费的:

// Declare the queue
         dispatch_queue_t workingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
         dispatch_async(workingQueue,
                        ^{
                          // My background job
                            dispatch_async(dispatch_get_main_queue(),
                                           ^{
                                              // Update the UI
                                           }
                                           );
                        });

Rohan,如果您希望从服务器下载数据,请将数据插入设备上的本地数据库,并且顺序很重要,那么我建议您研究异步请求,例如使用ASIHttpRequestAFNetworking

这比使用多线程编程要好

我不是大师,但根据我自己的经验,我发现多线程编程更适合在后台进行计算,而不是在后台下载数据。异步请求更适合在后台下载数据

必须为正确的工作使用正确的工具


希望能有所帮助。

我想最简单的方法是使用这个NSObject的方法:

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
这将调用将在后台运行的方法,解析数据。
完成后,您可能需要通知主线程。因此,您可以在主线程中执行完成处理程序:

NSBlockOperation* completionHandler=[NSBlockOperation blockOperationWithBlock: ^
{
    // Use the parsed data
}];
NSOperationQueue* queue=[NSOperationQueue mainQueue];
[queue addOperation: completionHandler];

PS:这应该在后台方法完成数据解析后使用。我假设您需要更新一些可能会与主线程产生争用条件的内容

我完全不知道如何在IOS中处理线程。
。。。读书!