É verdade… O seletor de horas do alarme do iPhone tem um fim

O alarme é, possivelmente, uma das funcionalidades mais usadas do iPhone: milhões de utilizadores dependem dela diariamente. No entanto, mesmo uma ferramenta tão familiar pode esconder “segredos” que passam despercebidos durante anos, até que alguém, por acaso, os descobre.


A ilusão de um ciclo infinito

Qualquer utilizador de iPhone conhece bem a interface para definir um alarme. O ecrã apresenta dois seletores numéricos, um para as horas e outro para os minutos, que se movem verticalmente.

A perceção imediata é a de que se trata de um “ciclo infinito” (ou um array circular): ao deslizar o dedo para cima nas horas, passa-se do 23 para o 00 e continua; nos minutos, ao deslizar para baixo, passa-se do 00 para o 59.

Esta lógica circular parece tão óbvia que ninguém a questiona. Afinal, por que razão seria de outra forma?

Recentemente, um utilizador do X (anteriormente Twitter) revelou que o seletor de tempo do alarme do iPhone não é, de facto, circular. Trata-se de uma lista finita, embora seja tão extensa que cria a ilusão de ser um ciclo perpétuo.

Após testarmos esta afirmação, podemos confirmá-la. Se tiver a paciência de deslizar continuamente o dedo, chegará a um fim. Na configuração de 24 horas, a lista de horas começa em 01 e termina, de forma algo aleatória, no número 16. Já a lista de minutos, após muitas, muitas voltas completas, vai de 00 até 39.

Mas porquê? As teorias por detrás da decisão da Apple

A questão que se impõe é: por que motivo a Apple optou por esta implementação? Uma das explicações mais plausíveis reside na eficiência de programação. Pode ser mais simples para a aplicação carregar um conjunto pré-definido de números em vez de executar uma ação de repetição contínua (loop). Como explica outro utilizador do X:

Aqui temos um seletor de horas no meio; à esquerda, mostra cada hora que tem realmente uma célula ativa, e à direita, todas as “Células” que estão a ser usadas no seletor do meio.
Quando uma hora está prestes a aparecer no ecrã, encontra uma “Célula” livre – uma que acabou de sair do ecrã – e coloca-a de volta do outro lado, muda o número que está a mostrar e voilà, magia de scroll infinito.
Não importa o quão longe faças scroll aqui, só existem de facto 7 células criadas para mostrar as horas. Não são 12 células num círculo grande, nem dezenas de milhares – apenas precisa de 7.

Este truque chama-se TableView e existe desde o primeiro iPhone. A questão é que ainda tens de dizer quantos itens há na lista; aqui digo “10.000”. Quando chegas a esse limite, atinges o “fim” da lista e percebes que afinal não é nenhum spinner 3D sofisticado, são apenas 7 pequenas caixas de texto reutilizadas vezes sem conta.

Que outros segredos esconde o iOS?

Esta descoberta leva-nos a questionar que outras curiosidades se escondem no sistema operativo da Apple. Por exemplo, até que ponto no futuro nos leva a aplicação Calendário no iPhone? Um utilizador do Reddit, bastante persistente, conseguiu chegar ao ano 10005.

Será que o Calendário continua a gerar novos meses infinitamente? O iOS continua a provar que, mesmo nos seus cantos mais explorados, ainda há espaço para surpresas.

Leia também: