2013-09-10 4 views
0

Как выполнить JSON-анализ в фоновом потоке в viewDidLoad и переместить его в основной поток при нажатии кнопки. Теперь я попробовалможно ли изменить операцию фонового потока в основной поток?

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


-(void)parseData { 

    MSJsonParser *parser = [[MSJsonParser alloc]initWithParserType:kCountriesParsing]; 
    parser._parserSource = self; 
    [parser requestParsingWithUrl:COUNTRIES_URL ]; 

} 

Но я не знаю, как изменить этот фоновый процесс в основной теме. пожалуйста, помогите мне

+1

Почему вы хотите это сделать? – Amar

ответ

0

деталь в этом методе вы хотите запустить на главном потоке, просто вставить его внутри этого НОД блока, и он будет работать его на главной теме:

dispatch_sync(dispatch_get_main_queue(), ^{ 
    //put stuff here 
}); 
+0

не уверен, если я получу то, что вы имеете в виду, проанализируйте его в фоновом режиме и нажмите на кнопку, чтобы перейти к основному потоку, хотя ... похоже, что вы пытаетесь получить способ потенциально запускать на 2 разных потоках. – Fonix

+0

Разве 'dispatch_sync' не блокирует поток, который сделал вызов, когда он выполняет блок? – JeremyP

0

См NSObject (NSThreadPerformAdditions) в NSThread

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array; 
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;