Pergunta

Fiz uma chamada para um método de classe do appDelegate assim:

    RankingAndSMProcess *process = [RankingAndSMProcess alloc];

    [process performSelectorInBackground:@selector(DoRankingAndSocialMediaProcessing) withObject:nil];

    [process release];

Este método chama outros métodos:

     @try {
         [self GoForRankingProcess];
         [self updateItemsForPeerindex];
         [self updateItemsForKloat];
         [self updateItemsForKred];
     }
     @catch (NSException *exception) {
         NSLog(@"An Error has been occured:%@", exception);
     }
     @finally { 
         [items release];
         [profile release];
     }

Todos os métodos chamados de dentro do método DoRankingAndSocialMediaProcessing em RankingAndSMProcess devem ser chamados da mesma maneira que DoRankingAndSocialMediaProcessing no thread de segundo plano?Ou há outro problema potencial aqui?

Atualmente não creio que nenhum dos métodos de processamento esteja sendo acionado, pois nenhum dado novo está sendo coletado.

Antes de adicionar a alteração da chamada para execução em segundo plano, todos os métodos e todo o processo funcionaram conforme o esperado.

Foi útil?

Solução

Crie um NSOperation e adicione esta operação ao NSOperationQueue.Isso criará um novo thread paralelo ao thread principal e executará seu método também.

Aqui estão alguns links úteis:

NSOperação no iPhone

http://www.icodeblog.com/tag/nsoperação/

http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperação-and-nsoperaçãoqueue/

Espero que isso ajude você.

Aproveite a codificação :)

Outras dicas

O que todos esses outros métodos estão fazendo?Se for uma solicitação de rede, por exemplo, um loop de execução pode ser necessário para que o thread em segundo plano possa realmente executar a tarefa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top