iphone ios running in separate thread

What is the best way to run code on a separate thread? Is it:

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


  • Blank first UITableView section header
  • “This item cannot be shared. Please select a different item.” WhatsApp iOS share extension failure message
  • How to get the name of the backgroundImage from a button?
  • Am I correctly creating and passing this C array to Objective-C method and referencing it with a property?
  • How to access and refresh a UITableView from another class in Swift
  • UICollectionView adding UICollectionCell
  •     NSOperationQueue *queue = [NSOperationQueue new];
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
    [queue addOperation:operation];
    [operation release];
    [queue release];

    I’ve been doing the second way but the Wesley Cookbook I’ve been reading uses the first.

    4 Solutions Collect From Internet About “iphone ios running in separate thread”

    In my opinion, the best way is with libdispatch, aka Grand Central Dispatch (GCD). It limits you to iOS 4 and greater, but it’s just so simple and easy to use. The code to do some processing on a background thread and then do something with the results in the main run loop is incredibly easy and compact:

    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

    If you haven’t done so already, check out the videos from WWDC 2010 on libdispatch/GCD/blocks.

    The best way for the multithreading in iOS is using GCD (Grand Central Dispatch).

    //creates a queue.
    dispatch_queue_t myQueue = dispatch_queue_create("unique_queue_name", NULL);
    dispatch_async(myQueue, ^{
        //stuffs to do in background thread
        dispatch_async(dispatch_get_main_queue(), ^{
        //stuffs to do in foreground thread, mostly UI updates

    I would try all the techniques people have posted and see which is the fastest, but I think this is the best way to do it.

    [self performSelectorInBackground:@selector(BackgroundMethod) withObject:nil];

    I have added a category on NSThread that will let you execute threads in blocks with ease. You can copy the code from here.