Una delle più importanti rivoluzioni inserite nell’XCode 4.2.x è, unitamente al passaggio quasi obbligato ad LLVM (compilatore alternativo a GCC), l’adozione dell’Active Reference Counting, ARC in breve.
Farò una breve introduzione, semplificata al massimo, per spiegare le basi di questa tecnologia. Quando si sviluppava un’applicazione con XCode in Objective-C ad ogni oggetto allocato venita assegnato un contatore di istanza, ovvero ogni volta che si adoperava un’istanza di quell’oggetto veniva incrementato il contatore del numero di utilizzatori, ogni volta che si smetteva di adoperarla il contatore andava decrementato. Quando il contatore raggiungeva lo zero la memoria veniva liberata.
Per compiere questa operazione di adoperavano principalmente le parole chiave retain e release, per incrementare il contatore si adoperava la prima, per decrementarlo la seconda. Il rilascio della memoria, tramite dealloc, avveniva automaticamente quando il contatore si azzerava.
Questo meccanismo, pur se molto efficiente, introduceva (come per i puntatori in C) il rischio di lasciare reference valide degli oggetti che a lungo andare avrebbero esaurito la memoria disponibile.
Continue reading »
L’engine RSReport ha ancora ampi margini di implementazione ma, attualmente, può essere adoperata già per fornire dei report base da adoperare all’interno delle proprie applicazioni. Nel breve periodo, comunque, saranno diversi gli aggiornamenti che arricchiranno le funzioni e miglioreranno la stabilità dell’engine.
In questo articolo vedremo come adoperare l’engine per generare alcuni di questi report di base. Vi invito a seguire HTMedia.it per essere aggiornati sugli aggiornamenti che questa libreria e gli RSComponents riceveranno nel breve periodo.
Il concetto su cui ruota RSReport è, come per la maggior parte delle engine di reportistica moderna, l’uso delle bande. In ogni report, salvo casi speciali, è possibile identificare delle aree, alcune sono fisse altre variabili che possono ripetersi o meno. Ognuna di queste aree prende il nome di banda. Continue reading »
Cominciano con oggi i suggerimenti per Windows Phone. Come scritto nell’articolo dedicato a questo sistema operativo, questo ambiente offre, effettivamente, delle interessanti opportunità.
A causa di una fetta di mercato minore, se pur vero che i possibili acquirenti sono in numero limitato, è anche vero che la richiesta di applicazioni è molto elevata.
Avvicinarsi a questo sistema, almeno per le prove iniziali, è assolutamente gratuito (come anche per iOS ed Android), ma, visto che si parla di Visual Studio, non è da escludere che l’esperienza accumulata in quest’ambito possa rivelarsi utile anche in altri contesti.
Come sempre vi sono alcuni suggerimenti iniziali di cui tenere conto, in particolar modo se si è sviluppatori di lungo corso.
Continue reading »
Buongiorno a tutti,
questa notte è stato rilasciato un aggiornamento di RSComponents con l’aggiunta della classe RSDateHelper che, nel tempo, sarà arricchita delle funzionalità necessarie per snellire l’elaborazione, il confronto e l’usabilità delle NSDate all’interno delle applicazioni iOS.
Continue reading »
Punto di riferimento nella sua incarnazione precedente (windows mobile) prima che arrivasse l’iPhone, e quasi sparito del tutto dalla scena, nell’ultimo periodo il rinato sistema operativo di casa Microsoft ha ripreso a far parlare di se, soprattutto grazie all’accordo tra la casa di Redmond ed i Finlandesi delle Nokia.
Quest’ultima, conscia di aver perso il treno degli Smartphone e convinta che Symbian, il sistema operativo che ancora oggi (con un miliardo di pezzi venduti) la rende ancora il primo produttore di cellulari (non solo smartphone) al mondo, anzichè accodarsi (più o meno forzatamente), come la maggior parte degli altri produttori di dispositivi mobili, all’universo Android ha optato, più o meno coraggiosamente, per Microsoft ed il suo nuovo Windows Phone 7 (o 7.5), partorendo prima il Lumia 800 e, recentemente, il Lumia 710 e Lumia 900.
Continue reading »
Lo sviluppo di applicazioni per il sistema operativo made in Apple è sempre più diffuso e le possibilità di sviluppare applicazioni di successo sono ancora alte.
Quando si affronta lo sviluppo di un’applicazione, però, ci si trova spesso a dover affrontare la necessità di dover svolgere compiti, spesso noiosi o che richiedono molto tempo, che purtroppo non sono stati previsti all’interno dell’SDK.
Ad esempio potrebbe essere necessario inviare un’email dall’interno della propria applicazione, parsare in modo efficace un file JSON (anche se con iOS 5 il parsing di questo formato è stato integrato), dover leggere un RSS feed e tanto altro ancora.
Questi compiti sono spesso ripetitivi e fanno perdere molto tempo nello sviluppo di un’app. Fortunatamente esistono degli sviluppatori che hanno permesso di alleviare una parte di queste fatiche sviluppando codice adatto a questi scopi ed ampiamente riutilizzabile.
Continue reading »
Rispetto alle prime versioni di iOS una delle innovazioni più importanti è stata l’introduzione di CoreData. Esso è un approccio attraverso il quale è possibile creare un sistema di archiviazione complesso di dati all’interno della propria applicazione. Gli argomenti relativi a CoreData sono estremamente complessi e non possono essere esauriti all’interno di un singolo suggerimento, anzi riguardano concetti teorici talmente profondi da meritare di ricevere una piccola pubblicazione.
Una cosa che però salta subito all’occhio è che CoreData pur usando delle strutture simil SQL non è SQL, quindi l’interrogazione di tabelle attraverso JOIN o altri metodi non può essere preso in considerazione. Bisogna seguire le regole imposte dal sistema affinchè tutto funzioni regolarmente. Se non si preferisce adattarsi a queste regole bisogna scrivere il database di sana pianta così come i sistemi di interfacciamento ad esso.
Qualcuno, fino alla versione 5.0 (esclusa) spesso aggirava l’ostacolo iniettando delle istruzioni SQL all’interno del codice. Questo, oltre che una pratica discutibile, è anche molto rischiosa in quanto potrebbe andare in conflitto con i thread di gestione del sistema stesso. Forse anche per prevenire questo (oltre che per incrementare la sicurezza in virtù dell’adozione di iCloud) dalla versione 5.0 del sistema operativo iOS i database creati con CoreData sono criptati, o comunque protetti.
Se è pur vero che CoreData non permette di usare istruzioni in SQL puro, è anche vero che per molte cose semplifica il compito non di poco.
Uno degli aspetti su cui si notano tali semplicificazioni sono le selezioni di entità in base alle date.
Continue reading »
I dispositivi iOS hanno dimostrato che adoperare un cellulare o un tablet per connettersi ad Internet non solo è possibile ma anche utile. Infatti verificando le statistiche di accesso si nota che tali dispositivi sono sempre i primi nell’accesso alla rete.
Anche io, personalmente, annovero i software che si connettono a servizi esterni, tra quelli più usati sui miei dispositivi.
Anzi posso tranquillamente affermare che il 90% degli applicativi da me scritti finora realizzavano una connessione ad internet per inviare e ricevere i dati sotto varie forme. Tali connessioni sono rivolte principalmente alla chiamata di servizi secondo i protocolli più disparati (sia standard che meno), di conseguenza nel codice sorgente mi sono trovato spesso a dover passare farametri di chiamata sia in formato GET che POST appropriatamente elaborati per poter essere trasferiti.
Tale operazione di codifica viene definita, generalmente, URLEncode e consiste nel sostituire determinati caratteri di una stringa nel loro equivalente esadecimale precedendoli con il simbolo di % (per esempio il carattore ‘ ‘, spazio, viene tradotto in %20, ovvero il 32 decimale che nel set di caratteri standard ASCII o UTF8 identifica appunto lo spazio). Tali caratteri verrano poi ricondotti alla loro forma normale direttamente dal webserver che riceverà la chiamata.
Continue reading »
L’introduzione di ARC con le ultime release di XCode e del compilatore LLVM hanno sicuramente contribuito a semplificare il codice delle proprie applicazioni. Infatti, salvo rari casi, l’applicazione gestisce in modo appropriato la memoria a disposizione rilasciandola quando necessario.
Ora, però, che iOS è un sistema operativo maturo e diffuso fanno capolino diverse librerie di terze parti che, adoperate all’interno delle proprie applicazioni, permettono di risparmiare tempo e codice nella realizzazione. Tali librerie, nonostante siano molto diffuse, non necessariamente sono aggiornate con tempestività, per cui il supporto ad ARC non è previsto. Anzi in alcuni casi gli sviluppatori stessi, per motivi di retrocompatibilità, spesso decidono di spostare il supporto ad ARC in tempi e modi da definirsi.
Ma come comportarsi nel caso si debbano adoperare tali librerie?
Se i files sono in formato compilato, salvo eccezioni, possono essere adoperate all’interno della nostra applicazione senza colpo ferire. Ma se essi sono in formato sorgente si aprono due possibilità:
1 – Modificare i files in modo che supportino ARC
2 – Dsabilitare ARC per questi files.
Continue reading »
Il nostro lettore Mattia Cardazzi scrive in una sua email:
Salve, ho acquistato il suo libro e lo uso da diverso tempo.
C’è un grosso problema di crash con la guida di pag 108 per inviare un’email dentro l’app.
Il problema è che il metodo funziona su ipad 1, iphone 3gs e 4 con iOS 5 ma crasha cu ipad 2 e iphone 4s con iOS 5.
Ha trovato per caso una soluzione, sa darmi dei consigli.
Grazie molte per l’aiuto.
Innanzitutto ringrazio Mattia per aver acquistato il libro. e gli chiedo scusa se soltanto oggi riesco a postare la risposta alla sua richiesta. Purtroppo diversi intoppi hanno rallentato l’attività del sito e quella mia personale.
Il codice presente sul libro è valido anche per la versione 5 di iOS e funziona correttamente sia con iPad che con iPhone 4S. La differenza fondamentale risiede nel come viene aggiunto il framework MessageUI a quelli adoperati dall’applicazione. Il procedimento corretto è descritto in questo articolo.
Ma onde evitare dubbi ho provato a riscrivere una breve applicazione di esempio che permetta di inviare l’email con la tecnica illustrata. Per far questo però, ho preferito creare un’App Universal e visto che si parla di iOS 5, adoperando anche ARC.
Continue reading »



