Skip to content

Xojo2019r2.1

Importante aggiornamento per Xojo, da installare assolutamente!

È disponibile una nuova release di Xojo che semplifica in maniera sostanziale il passaggio alle API2.0 consentendo di avere tutte le nuove funzionalità con un percorso più lineare di quanto inizialmente richiesto.

Un ritorno alle origini…

La più importante novità di questa release è che i nuovi nomi degli eventi sono tornati ad essere quelli precedenti.
Per cui all’apertura di una Window non abbiamo più il nuovo Opened ma nuovamente il vecchio e classico Open.

Questo passaggio si è reso necessario in quanto alla Xojo si sono resi conto che le situazioni reali degli sviluppatori, specialmente per quelli che creano componenti per se o per terzi, erano diverse da quello che immaginavano e non tutti potevano gestire una doppia versione di componenti.

Tra l’altro, a mio avviso, questo semplifica il processo di aggiornamento del proprio codice in quanto dobbiamo solo concentrarci sulle nuove funzionalità.

… e diverse novità

Il problema di gestire componenti che potevano essere utilizzati sia nelle nuove versioni che in quelle precedenti non era solo limitato dall’incompatibilità degli eventi, ma anche dal codice stesso.

L’introduzione delle nuove API è stato chiaramente accompagnato dalla nota che quelle vecchie saranno disponibili, seppur deprecate, per molto tempo e quindi che è possible aggiornare il proprio codice con calma. Questo permette di sfruttarle entrambe, anche se chiaramente è meglio dividere i contesti e i casi in cui lo facciamo.

Verificando un progetto con codice misto è facile trovarsi con una lista enorme di warning a proposito di codice da aggiornare. Con questa release questa segnalazione è disabilitata di default e va attivata progetto per progetto.

Io consiglio di iniziare ad usare le nuove API il più possibile in quanto le novità introdotte, per quanto con nomi a volte discutibili, sono assolutamente utili e semplificano non poco sia la scrittura del codice che il lavoro di porting da altri linguaggi.

Per chi vuole passare, magari un po’ alla volta, alle nuove API o per chi vuole (o deve) mantenere una compatibilità con le versioni precedenti esiste la possibilità di utilizzare #if XojoVersion per distinguere il codice da usare.
Ma questa soluzione va bene per porzioni di codice o metodi brevi, per metodi lunghi o anche per funzioni che devono restituire ad esempio una data (date per API1 e datetime per API2), o ricevono parametri che magari sono di tipo diverso a seconda delle API, il problema era irrisolto.

I nuovi check box relativi alle API

La soluzione è stata l’introduzione di due check box nelle funzionalità speciali del metodo, dove possiamo inserire gli attributi o se la funzionalità è per uno specifico target, qui ora abbiamo i check box API1 e API2.

Di default sono entrambi abilitati (indicando un metodo che viene visto dalle versioni vecchie e nuove), ma possiamo abilitare solo l’una o solo l’altra per fare in modo che il codice venga analizzato relativamente alla specifica API.

Ora possiamo avere due metodi con lo stesso nome ma relativi alle API. Se li selezioniamo entrambi (valore di default) il metodo viene visto dalla versione attuale e da quelle precedenti e quindi nel suo interno, se necessario, useremo #if XojoVersion; selezionando solo API1, il metodo verrà visto dalle versioni precedenti e ignorato da quella attuale e successive, viceversa selezionando solo API2.

La stessa funzionalità la abbiamo a livello di classi, ma a parte casi molto particolari, sconsiglio di utilizzarla visto che non possiamo comunque avere due classi con lo stesso nome.

e bug fix

Ovviamente la nuova release porta con se diverse correzioni di malfunzionamenti e piccole novità. Tra queste la più importante riguarda datetime dove il metodo di classe now, per ottenere la data corrente, ora può avere un opzionale oggetto timeZone per poter ottenere la data con il fuso orario richiesto.

Conclusioni

L’aggiornamento porta con se piccole ma importanti modifiche. Molti si trovano nella condizione di dover supportare progetti in diverse versioni e l’aver rinominato gli eventi e l’impossibilità di distinguere i metodi ha reso difficile l’uso delle novità introdotte con la release precedente. La soluzione permette ora un percorso più semplice e rischiara il futuro di questa piattaforma.