Ir para conteúdo
  • Cadastre-se

Problemas ao usar o sleep do iOS e atualizar telas


Posts Recomendados

Amigos

 

Como de costume em outras linguagens eu uso o sleep para fazer uma transação continua parando de N a N segundos e executando operações especificas

 

Tentei usar o conceito no iOS mas percebi que a tela não consegue ser repintada

 

Alguém sabe como contornar isto ou como proceder para substituir o sleep por algo que repinte a tela

 

Anexo meu projeto de teste que demonstra a falha

 

Dario

Teste1Sleep.zip

Link para o comentário
Compartilhar em outros sites

  • Respostas 3
  • Criado
  • Última resposta

Top Postadores Neste Tópico

Dias Populares

Top Postadores Neste Tópico

Dias Populares

Fiz a modificação sugerida conforme mostro no código abaixo mas não resolveu.

O ciclo acontece mas a tela não atualiza...

 

- (IBAction)iniciarSleep:(id)sender {

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

- (void)minhaThread:(id)sender {
     label1.text=@"iniciando sleep...";
     int contador=0;
     while (true)
     {
         label1.text=[[NSString alloc] initWithFormat:@"contando...%d", contador];
         contador++;
         NSLog(@"sleep 1 segundo...");
         sleep(1);
         if (contador==10) {
             UIAlertView *alertView = [[uIAlertView alloc] initWithTitle:@"Aviso..."
                                                                 message:@"Chegou a 10 segundos..."
                                                                delegate:self
                                                       cancelButtonTitle:@"OK"
                                                       otherButtonTitles:nil,
                                       nil];
             [alertView show];
             NSLog(@"deveria mostrar o alert aqui...");
         }
     }
}
Link para o comentário
Compartilhar em outros sites

Amigos,

 

Deu certo, eis o código

 

- (IBAction)iniciarSleep:(id)sender {
    label1.text=@"Começando...";
    // 60 milliseconds is .06 seconds
    meuTimer=[[NSTimer alloc] init];
    meuTimer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(atualizaSleep:) userInfo:nil repeats:YES];
}

- (void)atualizaSleep:(id)sender {
    //[label1 performSelectorOnMainThread:@selector(setText:) withObject:[[NSString alloc] initWithFormat:@"contando...%d", contador] waitUntilDone:YES];
    label1.text=[[NSString alloc] initWithFormat:@"contando...%d", contador];
    contador++;
    NSLog(@"sleep 1 segundo...");
    if (contador==10) {
        UIAlertView *alertView = [[uIAlertView alloc] initWithTitle:@"Aviso..."
                                                            message:@"Chegou a 10 segundos..."
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil,
                                  nil];
        [alertView show];
    }
    if (contador==20) {
        contador=0;
        [meuTimer invalidate];
    }
}

Link para o comentário
Compartilhar em outros sites

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.



  • Estatísticas do Fórum

    • Total de Tópicos
      56.3k
    • Total de Posts
      466.1k
×
×
  • Criar Novo...