Can I use a background thread to parse data?

4 Solutions Collect From Internet About “Can I use a background thread to parse data?”

The NSObject class has several different instance methods that allow you to invoke methods on the main UI thread. The performSelectorOnMainThread:withObject:waitUntilDone: method, for instance, allows you to invoke a method of the receiver on the main thread with the object of your choice.

Here’s some code to get you started:

-(void) dataDoneLoading:(id) obj {
    NSMutableArray *array = (NSMutableArray *) obj;
    // update your UI
    NSLog(@"done");
}

-(void) myThread:(id) obj {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableArray *array = [[[NSMutableArray alloc]init ]autorelease];

    // build up your array

    [self performSelectorOnMainThread:@selector(dataDoneLoading:) withObject:array waitUntilDone:NO];

    [pool release];    
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [NSThread detachNewThreadSelector:@selector(myThread:) toTarget:self withObject:nil];    
}

You can always pass objects between threads.

Use the following code to create a thread and pass the object to it.

[NSThread detachNewThreadSelector:@selector(myThreadSelector:) toTarget:self withObject:myObject];

After the thread function is over you can pass the data back to the main thread using

[self performSelectorOnMainThread:@selector(myMainSelector:) withObject:myReturnObject waitUntilDone:NO];

you can pass the output NSArray from the parser to myMainSelector: and reload the tableview in it.

-(void)myMainSelector:(id)sender
{
    NSArray *arr = sender;
    tableDataArray = [NSArray arrayWithArray:arr];
    [yourTableView reloadData];
}

You can show an activity indicator while you are in the thread method.

ofcourse we can pass objects to thread… please go through the link which shows how to process heavy task in background…

It is better to use NSOperation class to do that job.
You can find a nice example named “LazyTableImages” at XCode documentation. It is uses a NSOperation to parse a XML