Bus Torino Plus scontato a 0,79 €

In occasione del Natale e per festeggiare un anno di presenza su App Store, a partire da oggi e fino al 28 Dicembre il prezzo di Bus Torino Plus scende a 0,79 €.

Approfitto per ringraziare tutti colori i quali hanno acquistato l’applicazione ed in particolare a chi ha lasciato un commento, anche quelli particolarmente vigorosi. Penso che che spende del tempo per lasciare un commento sia interessato all’applicazione ed al suo miglioramento.

Purtroppo ho avuto qualche impegno in più del previsto e non sono riuscito a rilasciare il promesso aggiornamento (con supporto al background, grafica per iPhone 4, più mappe, elenco delle linee, allarme di fermata raggiunta, ecc.) nei tempi che avevo immaginato. Vi chiedo quindi di pazientare ancora un po’, tengo molto a questa applicazione e quindi dedicherò sicuramente del tempo per aggiornarla.

Rilascio della memoria degli outlet

Una delle cose che trovo più complesse nello sviluppo in Objective-C è la gestione della memoria. Per quanto la si studi e per quanto se ne legga ci si trova sempre in situazioni in cui non si capisce bene come funzioni.

Una regola che a mio avviso non è così ben documentata è la seguente: gli oggetti definiti nel file di include mediante la direttiva IBOutlet e quindi collegati in Interface Builder ai rispettivi elementi della UI vanno rilasciati in modo esplicito con una release nel messaggio di dealloc.

Nei file generati in modo automatico da XCode ciò avviene per esempio per la UIWindow e per il View Controller. Ma in quanto generati in automatici spesso non ci si fa troppa attenzione.

Quindi il fatto di utilizzare l’Interface Builder ci evita di dover allocare ed inizializzare da codice l’oggetto ma non di rilasciarlo quando non più necessario.

Come sempre comunque il migliore amico dello sviluppatore iPhone/iPad è Instruments con la possibilità di rilevazione dei leaks che esso offre. Ogni applicazione dovrebbe essere analizzata a fondo con Instruments con l’obiettivo di eliminare ogni leak (ovviamente se causato dal nostro codice e non presente nei vari framework).