Utilizando Threads no iPhone SDK – iOS

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.

Tutorial – Como criar Serviços WCF RESTful JSON

Muitos desenvolvedores para iPhone acabam por criar seus próprios serviços JSON em projetos pessoais. Aqui vou explicar como criar um serviço simples em WCF RESTful que retorna um JSON para você utilizar no seu projeto para iPhone.

Para ter um overview melhor sobre o que é REST (Representational State Transfer) clique aqui. Atualmente o REST é outro método para o acesso de serviços web de clientes. Normalmente serviços WCF são acessados usando SOAP, mas se for criando um serviço que é acessado por REST, você pode acessar seus serviços com diferentes arquiteturas (como o JSON).

Por quê usar REST que devolve JSON?

  • Pode ser usado por iPhone, Android, Windows Mobile, aplicações web .NET, JAVA ou PHP.
  • Mais leve, pois o JSON retorna os dados de forma mais limpa que o XML.
  • Mais legível e fácil de testar (difícil debugar SOAP apenas com o browser)

Passo a passo

1.       Crie um novo projeto no seu Visual Studio. File->New->Project. Crie um “WCF Service Application”. Nomeie-o como HelloWorldJSON.

Criação do serviço

2.       Apague os arquivos IService1.cs e Service1.svc que são criados por default.

Apague estes arquivos em destaque

Agora clique com o botão direito no projeto e adicione um novo arquivo WCF. Nomeie-o como HelloWorldJSON.

Adicionando arquivos personalizados

3.       Escreva o código como mostrado abaixo em IHelloWorldJSON (note que, para ilustrar a diferença do retorno de JSON e XML, criaremos dois métodos de acesso):

 

Métodos de acesso para JSON e XML

4.       Agora abra o arquivo de implementação do HelloWorldJSON e escreva o seguinte código:

 

Arquivo de implementaçao

5.       Agora iremos configurar o web.config do nosso serviço

Já que o serviço será RESTful, troque o binding para webHttpBinding e adicione (se não estiver por default) behaviorConfiguration=”web”:

 

Primeira parte de edição do web.config

 

Nesssa segunda adicione o <endpointBehaviors> e o resto de sua estrutura (se ainda não existir):

 

Segunda parte da configuração

6.       Está pronto. Rode seu serviço.

Para acessar, digite no browser:

Para baixar o projeto, clique aqui

Veja nossos tutoriais e dicas de como programar para o iPhone em nosso post/índice. Clique aqui.