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

11 Comentários

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:

AirPods: tradução em tempo real ainda não suporta o português de Portugal, mas…

Comentários

11

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Max
    Max

    Resumindo: Se girar a “roda” dos minutos e a das horas umas vezes para cima e outras para baixo, como costuma fazer, não dá por nada – os 59 minutos passam para 00 e as 23 H para 00. Mas se se puser a girá-las para o mesmo lado, feito parvo, vai ver que ao fim de uma porradaria de voltas, há uma altura em que vai saltar, nas horas, do 16 para o 00, nos minutos do 39 para o 00.
    Consequências práticas: nenhumas, vai conseguir marcar o alarme para as 07:05 à mesma.
    Devo dizer que acho uma certa graça aos que descobrem bugs do tipo: toca aqui, toca ali, em sequências que nunca imaginou nem realizaria na prática – e conseguem bloquear o iPhone.
    No caso do post não acho piléria, não descobriram bug nenhum. Só chegaram a um “mistério”; por que é que, em termos de programação, não escolheram um loop infinito para girar as rodas sempre no mesmo sentido.

  2. Avatar de José Faria
    José Faria

    Yeah o melhor do mundo em tudo e depois tem pérolas destas!

    1. Avatar de lambisco
      lambisco

      As horas em loop, podem trazer vários conflitos na programação e provavelmente uma resposta não tão boa, e não é só no iphone, é em qualquer sistema. Muitos aplicações de alarme utilizam apenas a lista de 00 a 23 sem dar a volta.

    2. Avatar de Max
      Max

      Ó Faria, farias melhor em perceber o post!

      1. Avatar de José Faria
        José Faria

        Eh pah foi apenas porque anuncionaram aqui o iPhone airpods etc como quase o melhor do mundo e depois a “Apple” corrigiu esse bug agora e anunciam aqui. Chamo pérolas porque já podia estar resolvido há muito mas a Apple continua supostamente a ser a melhor coisa do mundo.. não e mas anunciam.. é só isso falta alguma imparcialidade

        1. Avatar de Max
          Max

          Só que não há bug …
          Se a Apple respondesse diria: “Fi-lo porque qui-lo!”
          A questão é apenas de saber porque “qui-lo”.

  3. Avatar de Tuga sem escrúpulos
    Tuga sem escrúpulos

    Como programador, garanto-vos que isso é um erro infantil que nem muitos juniores cometem…

  4. Avatar de Rui Almeida
    Rui Almeida

    So limitacoes! Podia comprar 10 aifones todos os dias com os meus rendimentos mas nada me faz mudar do meu redmi note 14 que á de longe superior em tudo! Ate a camera tem 200 megapicles!

    1. Avatar de Max
      Max

      Ó Almeida, isso dá 10.000€ por dia, 300.000 por mês!
      Vendes 1 milhão de picles por dia?

    2. Avatar de há cada gajo
      há cada gajo

      És o maior !

  5. Avatar de Carlos
    Carlos

    ninguem quer saber. o facto de terem demorado 15 anos a descobrir so prova que não faz qualquer diferença se é circular ou não.

    o programado não foi burro de todo. em vez de perder tempo e recursos a ver como fazia uma implementacao circular fez uma lista que durante 15 anos milhoes e milhoes de pessoas não repararam.