Skip to content

Introdução ao uso de Thread em objective C

Introdução ao uso de Thread em objective C

Bom pessoal, neste post vamos trabalhar com Threads, uma ferramenta muito interessante, para quem não sabe como funciona, vamos a uma explicação básica, é dividir o processo para que ele possa ser executado em paralelo ao funcionamento principal. Exemplificando, vamos imaginar um app que faça uma consulta de dados para montar uma tabela, e essa tabela tem fotos de alguma coisa.Montar a tabela em si com os dados em forma texto será algo simples e rápido, porem baixar as imagens é algo muito mais demorado, e enquanto estivermos baixando as imagens toda nossa interface fica parada até que todos os downloads sejam finalizados, e bem isso pode levar alguns segundos, não será o fim do mundo, mas pode prejudicar a experiência do usuário.

E como podemos resolver isso ?

Bom com nossa Thread, podemos simplesmente mandar as imagens serem baixadas em “segundo plano”, ou seja nosso aplicativo continua funcionando, e a medida que as imagens são baixadas podem ser exibidas.

Como não terei tempo de fazer um aplicativo completo com o download de imagens e tudo mais, vou criar um aplicativo simples apenas 2 métodos que serão executados em paralelo (mas se você quer aprender a trabalhar com tabelas acesse esse link onde ensinamos).

Bom o projeto será algo bem simples, crie 2 labels pronto essa é toda a interface que vamos precisar , em nosso arquivo .m vamos criar 2 métodos chame como quiser, em um deles nós vamos fazer um laço curto de 0 a 10, já no outro vamos criar um laço grande de 0 a 10000000. Nosso código deve estar algo assim:

-(void)contadorPrincipal{

for (int i = 0 ; i < 10; i++) {

self.labelPrincipal.text = [NSString stringWithFormat:@”%i”,i];

}

}

-(void)contadorSecundario{

for (int i = 0; i < 10000000; i++) {

NSLog(@”a”);

self.labelSecundaria.text = [NSString stringWithFormat:@”%i”,i];

}

}

Lembrando que o labelPrincipal e labelSecundaria  são as labels que criamos no nosso storyboard.

Digamos que, em nosso método viewDidLoad nós usamos um self para chamar os métodos contadorSecundario, e contadorPrincipal nessa ordem, bom nosso código vai funcionar, porem o método contadorprincipal só vai ser executado quando o contadorSecundario terminar, e bem pelo tamanho do laço podemos ver que vai demorar um pouco, bom mas e se eu quiser que ambos sejam executados ao mesmo tempo, e que nenhum atrapalhe a execução do outro ? Bom podemos fazer jogando um laço dentro do outro e usando um pouco de lógica, porem isso pode dar mais trabalho que criar nosso Thread.

Para executar um método em segundo plano precisamos de apenas uma linha de código basta que onde usamos nosso self padrão para chamar o método contadorSecundario vamos trocar por:

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

E pronto nosso método agora será executado em segundo plano na nossa execução.

No comment yet, add your voice below!


Add a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *