iphone ios运行在单独的线程

在单独的线程上运行代码的最好方法是什么?是吗:

[NSThread detachNewThreadSelector: @selector(doStuff) toTarget:self withObject:NULL];

要么:

    NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
                                                                        selector:@selector(doStuff:)
                                                                          object:nil;
[queue addOperation:operation];
[operation release];
[queue release];

我一直在做第二种方式,但我读过的Wesley Cookbook使用第一种方式。

在我看来,最好的方法是使用libdispatch,也称为大中央调度(GCD)。它限制你到iOS 4和更大,但它只是这么简单和易于使用。在后台线程上做一些处理,然后在主运行循环中做结果的代码是非常容易和紧凑的:

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // Add code here to do background processing
    //
    //
    dispatch_async( dispatch_get_main_queue(), ^{
        // Add code here to update the UI/send notifications based on the
        // results of the background processing
    });
});

如果你还没有这样做,请查看WWDC 2010上libdispatch / GCD /块上的视频。

http://stackoverflow.com/questions/3869217/iphone-ios-running-in-separate-thread

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone ios运行在单独的线程