Utilizando Threads no iPhone SDK – iOS
02/03/2011 1 Comment
Neste post vamos abordar um assunto que é essencial para quem quer fazer um aplicativo multi-tarefas.
Em poucas palavras, um aplicativo multi-tarefas tem a capacidade de executar várias delas ao mesmo tempo. Para ser mais preciso, esse tipo de aplicação divide o tempo do processador com outras tarefas. E essa técnica de escalonamento de tarefas aumenta o desempenho do seu sistema.
Existem dois meios de se criar threads no iOS: utilizar um template existente ou criar explicitamente uma thread.
Para criar uma thread utilizando um template basta chamar uma das funções abaixo:
- (void) performSelectorInBackground:(SEL)aSelector withObject:(id)arg
- (void) performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
A função performSelectorInBackground:withObject: cria uma thread em background passando o método que será executado (o selector) e os parâmetros desse método (o object).
Exemplo de uso:
- (void) workerThread {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *str = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://2mnsoftware.wordpress.com"]];
[pool release];
}
- (void) viewDidLoad {
[super viewDidLoad];
[self performSelectorInBackground:@selector(workerThread) withObject:nil];
}
Já a função performSelectOnMainThread:withObject:waitUntilDone: executa o método passado (o selector) na thread principal, com os parâmetros desse método (o object), bem como se ele deve ou não esperar pelo término da execução.
Exemplo de uso:
- (void) viewDidLoad {
[super viewDidLoad];
[self
performSelectorOnMainThread
:@selector(workerThread) withObject:nil
waitUntilDone:NO
];
}
Considerando que o método workerThread aqui chamado é o mesmo já citado anteriormente.
Mas como já dissemos no início deste post, existe uma outra maneira de se criar uma thread, que é requisitando uma diretamente da classe NSThread.
Exemplo de uso:
- (void)viewDidLoad {
[super viewDidLoad];
[NSThread detachNewThreadSelector:@selector(workerThread) toTarget:self withObject:nil
];
}
Bom pessoal, esse foi apenas um tutorial básico sobre threads, dando uma olhada por cima do assunto; e espero que tenham gostado. Num próximo post, discutiremos sobre possíveis aplicações.
Até a próxima!
Veja nossos tutoriais e dicas de como programar para o iPhone em nosso post/índice. Clique aqui.