Come salvare un’immagine in Swift preservando i dati EXIF

Recentemente ho dovuto “lottare” con i dati EXIF salvati nelle foto di iOS.

Personalmente era la prima volta che avevo la necessità di fare in modo che le immagini conservassero questi dati anche quando caricate tramite delle API. Pensavo che iOS fornisse dei metodi standard per queste operazioni, invece la questione si è rivelata più particolare del previsto.

In questo articolo troverete l’implementazione iniziale che utilizzavo, e le nuove modifiche che ho apportato per riuscire a risolvere il problema.

Continua a leggere

Swift e Timer, attenzione ai retain cycle

La creazione di un timer è un’operazione che, prima o dopo, qualsiasi sviluppatore iOS si trova a fare.

C’è una piccola insidia, tuttavia, nella gestione della memoria che può portare ad avere dei retain cycle all’interno della classe/controller in cui vi trovate a definire il timer.

La documentazione di Apple definisce così la classe Timer (NSTimer per i nostalgici):

Timers work in conjunction with run loops. Run loops maintain strong references to their timers, so you don’t have to

Continua a leggere

“Protocol Oriented Programming” per la gestione degli storyboard segue

Uno dei problemi ricorrenti nello sviluppo delle applicazioni iOS è la gestione della Storyboard e dei segue. Questi vengono definiti all’interno dello storyboard stesso, mentre alcune operazioni devono essere poi effettuate via codice. Tipicamente via codice si effettuano passaggi di dati o configurazioni che devono essere fatte a runtime.

Situazione attuale

Chiunque abbia utilizzato uno storyboard e i suoi segue avrà poi scritto delle istruzioni simili:

@IBAction func doSomething() { performSegueWithIdentifier("detailSegue", sender: nil) } override
Continua a leggere

Risolvere il problema di cache della tastiera con UIResponder+KeyboardCache

C’è un fastidioso bug in iOS che causa un ritardo piuttosto significativo tra la prima volta che la tastiera viene richiesta e quando questa appare effettivamente su schermo. Il problema si presenta solo al primo avvio della tastiera, che viene poi mantenuta in cache dal sistema.

Per risolvere questo problema, ho rilasciato su GitHub creato un’estensione in Swift, che permette di forzare la procedura di cache della tastiera (la category originale in ObjectiveC è invece disponibile in questa

Continua a leggere

Singleton in Swift

Uno dei pattern più utilizzati durante lo sviluppo è sicuramente il Singleton. Per chi non lo sapesse, la definizione di pattern Singleton è la seguente1:

Il singleton è un design pattern creazionale che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza.

Con un singleton, quindi, possiamo avere un’unica istanza di una determinata classe, che viene condivisa

Continua a leggere

Site Footer