In una recente intervista Phil Shiller si è ritrovato a giustificare i soli 16GB di spazio degli iPhone 6 e 6 Plus in versione base, asserendo che ormai la maggior parte dei dati vengono archiviati nel cloud. Personalmente trovo l'argomentazione poco convincente, infatti l'ultimo iPhone che ho acquistato con 16GB è stato il 5 e più volte mi ha dato problemi costringendomi a cancellare dati ed app, specie in occasione degli aggiornamenti di sistema. Con il passare degli anni le app iOS sono diventate sempre più pesanti, includendo le immagini in versione Retina e i binari universali 32/64bit, inoltre gli upgrade del sistema operativo hanno sempre richiesto uno spazio libero doppio rispetto a quello effettivamente necessario, perché prima scaricano i pacchetti e poi li decomprimono in locale. Con iOS 9 Apple si è impegnata per ridurre drasticamente l'occupazione di spazio del sistema e delle app grazie ad una serie di accorgimenti molto interessanti.

thinner

Il primo di questi riguarda proprio gli aggiornamenti di sistema, che saranno fino al 70% meno pesanti richiedendo poco spazio libero per l'installazione. Le principali novità, però, riguarderanno le app, grazie alle nuove ottimizzazioni analizzate da ArsTechnica. App Slicing servirà a suddividere il codice e le risorse di ogni pacchetto, in modo tale da installare su ogni dispositivo solo i file effettivamente utilizzati. Allo stato attuale scarichiamo tutte le immagini (risoluzione standard, Retina 2x e Retina 3x per iPhone 6 Plus) e tutto il codice (quello 32-bit/64-bit e quello per le GPU che supportano e non supportano Metal), mentre con iOS 9 l'App Store riconoscerà il nostro dispositivo e scaricherà solo le risorse effettivamente utili, con un notevole risparmio di spazio.

app-slicing

L'altra novità si chiama BitCode e sembra in qualche modo legata ad App Slicing. Per far sì che l'App Store possa fornire all'utente un pacchetto creato su misura, gli sviluppatori dovranno inviare ad Apple non più il binario pre-compilato ma un pacchetto esploso (ArsTechnica la chiama "rappresentazione intermedia"), in modo tale che il sistema possa compilare solo le risorse necessarie per il dispositivo che richiede l'app in tempo reale.

bitcode

Leggermente più complesso è On-Demand Resource, ma promette di essere altrettanto utile al contenimento della dimensione delle app. Grazie a questo sistema gli sviluppatori potranno scaricare le risorse solo quando necessarie, per poi cancellarle in un secondo momento. Un esempio potrebbe essere il tutorial video di introduzione, che non serve più dopo essere stato visto e si può eliminare, oppure i giochi a più livelli, dove si possono scaricare i nuovi all'occorrenza e cancellare i precedenti. Questo accorgimento non sarà automatico come App Slicing, quindi dovranno essere gli sviluppatori a modificare le proprie app per sfruttarlo, ma potrebbe cambiare drasticamente il peso dei software, specie nel caso di giochi molto complessi.

ODR_flow_2x