in serata verra rilasciata una nuova versione di RSReport con una importante novità.
Per chi non avesse seguito finora le evoluzioni del soggetto, riassumo brevemente le caratteristiche del progetto.
RSReport è una engine per dispositivi iOS in grado di produrre report in formato PDF partendo da un’entità CoreData. La logica di funzionamento è basata sulle bande.
Continue reading »
Buona notte a tutti,
è con piacere che vi comunico che è stato appena rilasciato un nuovo aggiornamento per la libreria RSComponents.
RSComponents è una libreria di componenti e classi da adoperare all’interno dei progetti iOS che offre una serie di integrazioni non disponibili nell’SDK standard. Attualmente si compone di una classe RSDateHelper che integra alcune funzioni di gestione delle date e due componenti dedicati uno all’inserimento di date il cui nome è RSCalendar e l’altro dedicato all’inserimento di numeri denominato RSNumberPad.
Continue reading »
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 »
i lavori su RSReport sono ripresi a pieno regime e vedranno nei prossimi giorni una serie di rilasci che ne arricchiscono le funzionalità.
Durante la notte è stata rilasciata una nuova versione Alpha, la 0.2.0a di RSReport con diverse novità vediamole insieme.
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 »
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 »
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 »



