L’uso dei timers (NSTimer) nello sviluppo di applicazioni per Apple iPhone è molto frequente e non solo nella realizzazione di giochi. Uno dei problemi con cui ci si può scontrare è l’asincronicità del timer stesso, che può portare, durante l’arresto di uno o più timer, al crash della nostra applicazione. Quando si vuole fermare uno o più timer, nei casi in cui repeats è impostato a YES, si invoca la invalidate che, appunto, arresta il timer.
Articoli con Tag ‘Sviluppo’
Very short trick: fermare NSTimer
Hi phone
Da oggi inauguro una nuova sezione (categoria per essere corretti) dedicata allo sviluppo di applicazioni su Apple iPhone! Premetto da subito che molti degli articoli che pubblicherò avranno un “taglio” in linea con lo spirito di questo blog, cioè saranno in maggioranza per utenti avanzati. Tuttavia, come ho già fatto per altri argomenti, cercherò di essere il più chiaro possibile e, dove necessario, inserire qualche “concetto base” utile ad un pubblico più ampio.
Shadowbox 3.0 beta
È stata rilasciata proprio ora (grazie alla segnalazione dell’autore Michael J. I. Jackson) la release 3.0 beta di Shadowbox.js. Oltre alla nuova grafica del sito ecco i più importanti cambiamenti di questa release preliminare:
Come nascondere il bottone di chiusura di un dialog jQuery UI
In attesa del rilascio ufficiale di jQuery UI 1.7 (eh già, il team di sviluppo di jQuery ha deciso che rilascerà la versione come 1.7, causa confusione), dove forse verrà inserita una opzione per eliminare il bottone di chiusura di un dialogo, ecco come risolvere velocemente il problema con l’attuale 1.6rc6:
Actionscript 3.0 for beginners: lesson #5
Chi ha iniziato a sviluppare codice con linguaggi di scripting come Javascript o lo stesso Actionscript, potrebbe non conoscere affatto il concetto di tipo dato. Con alcuni linguaggi ad alto livello, infatti, si è abituati – nella migliore delle ipotesi – a dichiarare le variabili senza assegnargli un tipo dato specifico, senza contare quei linguaggi che non richiedono nessuna dichiarazione (come ad esempio il PHP – non nella versione strict 5).
La matematica nella programmazione
Quanto matematica utilizza uno sviluppatore? E quanta matematica bisogna conoscere per saper e poter sviluppare bene?
Se si ha la passione per la programmazione molto probabilmente si riescono a superare tutti gli ostacoli dovuti a qualche mancanza matematica. Ciononostante se oltre alla passione si possiede una decorosa conoscenza matematica, nonché della logica, la nostra “vita” da sviluppatore ne guadagnerà sicuramente. Risulta comunque evidente che non tutti i programmatori hanno necessità di scontrarsi con problemi “matematici”. Molto, anzi tutto, dipende dal tipo di programma che si sta sviluppando. Una rubrica telefonica ha sicuramente molta meno matematica di un giochino come PacMan! Anche se non è sempre detto. In definitiva tutto dipende dalla “parte” di codice che stiamo sviluppando.
Centrare un elemento
Chi ad esempio sviluppa user interface (UI), ha certamente dovuto affrontare almeno una volta situazioni che richiedevano moltiplicazioni e divisioni aggrovigliate assieme. Una volta mi è capitato di imbattermi in un codice che doveva centrare orizzontalmente una window rispetto allo schermo. La funzione (non riporto il codice originale in C per semplificare la lettura a tutti) era scritta in questo modo:
1 | window.x = ( screen.width / 2 ) – ( window.width / 2 ) |
Probabilmente il programmatore quando l’ha scritta ha – correttamente – ragionato in questo modo:
- Trovo il centro dello schermo
( screen.width / 2 ) - Posiziono la finestra nel mezzo dello schermo
( window.x = screen.width ) - Dato che in questo modo sarebbe centrato solo l’angolo superiore sinistro della finestra, sottraggo anche la metà della larghezza della finestra
( window.width / 2)per “centrare” il tutto window.x = ( screen.width / 2 ) – ( window.width / 2 )
Fino qui la logica e la passione hanno sicuramente aiutato il nostro sviluppatore. Tuttavia un ulteriore miglioramento poteva esser fatto giusto per evitare le due divisioni, ovvero:
1 | window.x = ( screen.width – window.x ) / 2 |
La conoscenza delle frazioni, e quindi un po’ di matematica elementare, avrebbero risparmiato alla CPU un divisione di troppo: una delle operazioni più pesanti tra l’altro!
Se poi vogliamo essere “maniaci” o perfezionisti, potremmo, in base al linguaggio di programmazione che usiamo, migliorare ulteriormente l’operazione scrivendo:
1 | window.x = ( screen.width – window.x ) >> 1 |
Dove è >> indica l’operazione logica di “spostamento” a destra di un bit – notoriamente operazione molto rapida. Spostare a destra di un bit un valore equivale a dividerlo per 2!
Very short trick: come centrare elementi sulla pagina, anche su IE5
Non è che io me la prendo sempre con Internet Explorer, è solo che ogni dannata cosa positiva dello sviluppo Web (HTML e CSS) sembra non funzionare con il browser – ancora – più diffuso (un giorno qualcuno mi spiegherà il perchè). Un metodo assai comodo per posizionare un elemento al centro della finestra del browser è quello di sfrutture la proprietà auto dello stile margin; ad esempio ecco come posizionare un div al centro dello schermo:
Skypemote versione Adobe AIR: 1000 download
Very short trick: 3 output function in PHP
All’interno di una funzione PHP è possibile stampare in tre modi diversi:
1 2 3 4 5 6 7 8 9 10 | <?php function miaFunction( $valore = 'Ciao' ) { ?> <ul> <!-- <li><?php echo $valore; ?> --> <li><?=$valore?></li> </ul> <?php } ?> |
Oppure:
1 2 3 4 | function miaFunction( $valore = 'Ciao' ) { $o = '<ul><li>'.$valore.'</li></ul>'; echo $o; } |
Oppure:
1 2 3 4 | function miaFunction( $valore = 'Ciao' ) { $o = "<ul><li>$valore</li></ul>"; echo $o; } |
Actionscript 3.0 for beginners: lesson #4
Riprendiamo il nostro codice di esempio del TicTacToe (che trovate per intero su Google Code) e iniziamo ad analizzarlo in dettaglio.
Importare le definizioni
Con Actionscript 3.0 è stato fatto un grande lavoro di pulizia e sistemazione nell’alberatura delle classi (contenute nei pacchetti, package) utilizzate durante lo sviluppo. In altri linguaggi di programmazione, come il C ad esempio, quando si desidera utilizzare una funzionalità bisogna esplicitamente “importarla” nel codice. Questa operazione di “importazione” è necessaria per permettere al compilatore di avere tutti i codici e le definizioni legate alla funzionalità che vogliamo usare. In Actionscript 3.0, tuttavia, l’istruzione import non va confusa con l’equivalente C/C++ #include; Actionscript 3.0 mette a disposizione l’istruzione include che è identica all’#include del C/C++. Quest’ultima, infatti, “include” effettivamente del codice che, se usato o meno, viene compilato nell’eseguibile finale. L’istruzione import è di più alto livello e risulta più “intelligente” in fase di compilazione. Essa serve principalemente per accedere alle classi senza doverne specificare il nome completo. In alre parole invece di usare forme del tipo:







Ultimi Commenti
Giovambattista Fazioli: @Nik: Sono contento! In bocca al lupo dunque!!
Nik: Lunedì ho l’esame di informatica su java, grazie mi sei stato utilissimo, il libro che ho era poco chiaro...
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...