Timer — Manipulando o tempo utilizando o Timer(iOS)

Vinicius Mangueira
4 min readAug 4, 2018

--

Sumário

Nesse post aprenderemos sobre:

  • O que é o Timer.
  • Quando devemos utilizar o Timer.
  • Como implementar o Timer de forma básica.

O que é o Timer?

O Timer é um temporizador que é ativado após um determinado intervalo de tempo podendo ser passado em uma função, que envia uma mensagem bem especificada para um determinado objeto que foi lhe solicitado.

O Timer faz parte do pacote Foundation que pode ser considerado um framework que fornece uma base de funcionalidades para aplicações iOS, incluindo: armazenamento, persistência de dados, processamento de textos e outras coisas. É valido salientar que em versões anteriores do iOS, o Timer se trata de NSTimer, pois não se assuste quando você bater de frente com um objeto NSTimer.

Quando devemos utilizar o Timer?

Agora que já sabemos o que é, quando devemos usar e onde ele se aplica? Normalmente utilizamos o Timer quando temos a necessidade de uma espécie de cronômetro ou quando nossa aplicação necessita de alguma espécie de objeto para armazenar o tempo, e informar ao usuário. Abaixo podemos ver o exemplo do uso de aplicação realizando o uso do objeto Timer.

Implementação do Timer de forma simples.

Já que vimos que podemos usar o Timer para manipular o tempo como objeto, vamos trabalhar com isso na prática e com isso criar um cronômetro simples como foi citado acima.

Hands on:

Primeiro criaremos um novo projeto no Xcode, se você não sabe como realizar essa etapa e nem como trabalhar com conceitos básicos do iOS clique aqui ou acesse a documentação clicando aqui.

Primeiro na nossa View criaremos uma label para ser a representação do tempo, cujo na imagem está escrito "0", e três botões, sendo o "start" para fazer o tempo rodar, o "pause" para parar o tempo até que o usuário coloque o tempo para rodar novamente e o "reset" para reiniciar o tempo na label de cima.

No nosso Controller criaremos as referências para os nossos quatro componentes, sendo um Outlet para a label que mostrará o tempo, e três funções(func) para realizar as ações de start, pause e reset.

Note que criamos uma variável do tipo inteiro implícito para guardar o tempo que vai ficar alterando a cada segundo e também a variável timer do tipo Timer para temos uma referência e podemos manipular o objeto

Já no método que criamos para "startar"o tempo, utilizaremos a variável timer que criamos para manipular o tempo.

Utilizamos o método da classe Timer "scheduledTimer", que nos dá como parametro o intervalo de tempo que no nosso caso que é um cronômetro será passado de um em um segundo, o nosso alvo que será "self", já no selector nos passaremos uma ação que o timer irá realizar, que no nosso caso será a função action, que iremos criar agora

Toda vez que essa função é chamada na ação do nosso botão, ele adicionará mais um ao "timeAround" de um em um segundo(como vimos na função 'startTime'), e atribuímos esse valor a nossa label de tempo('lbTime.text'), como vimos que a label espera uma String e nosso objeto é do tipo inteiro, para fazer a atribuição é necessário do casting, que fazemos acima na variável passando o inicializador da classe String. Para finalizar implementaremos os métodos para reinciar e pausar o tempo respectivamente.

No método pause a gente usa uma método da classe Timer chamado invalidate, bem como o nome sugestivo já diz ele solicita a remoção do timer do loop de execução atual, assim parando o nosso timer.

Já no método resetTime, nós vamos parar o tempo com o método invalidate, atribuiremos o valor zero a variável "timeAround", que agora passará a ter o valor reiniciado assim como a label que mostra o tempo, e assim só será iniciado quando o usuário apertar o start. E assim ficará nossa aplicação:

Referências

--

--

Vinicius Mangueira

I'm Mobile developer who loves to learn about new web and mobile technologies. I combine my Computer Science studies with my soft skils