Eseguire un metodo dopo n secondi
Tutta la famiglia performSelector è davvero interessante e può essere utile in una moltitudine di casi. La sua applicazione più semplice e comune è la seguente:
1 2 3 4 5
| [self performSelector:@selector(myMethod) withObject:nil afterDelay:3];
//
- (void)myMethod {
NSLog(@"Hello World!");
} |
Tuttavia considerate che il “timer” non è preciso. Questa procedura, quindi, va usata quando non è richiesta una “notevole” precisione temporale.
Recuperare la versione dell’applicazione
1 2
| NSString *version = [[[NSBundle mainBundle ] infoDictionary ] objectForKey :@"CFBundleVersion"];
NSLog (@"versione = %@", version ); |
YES, true o TRUE?
Andando a spulciare nel Kernel Apple iPhone è possibile renderci conto che YES, true e TRUE sono in pratica la stessa edentica cosa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // definizione di YES
#define YES (BOOL)1
#define NO (BOOL)0
// definizione di true
#define true 1
#define false 0
// definizione di TRUE
#if !defined(TRUE)
#define TRUE 1
#endif
#if !defined(FALSE)
#define FALSE 0
#endif |
Almeno per adesso…
Vibrazione
1 2 3
| #import <AudioToolbox/AudioToolbox.h>
//
AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); |
Puntatore CGImageRef a partire da un UIImage
1 2 3 4
| UIImage *heart = [UIImage imageNamed:@"LittleHeart.png"];
CGImageRef image = [heart CGImage];
// L'immagine adesso può essere "rasterizzata" su un CGContextRef
CGContextDrawImage(c, (CGRect){0, 0, 100, 100}, image); |
Animazioni
1 2 3 4 5
| [UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
// ...
[UIView commitAnimations]; |
NSLog
1 2 3
| NSLog(@"NSString object %@ ", myString);
NSLog(@"Float: %f ", myFloat);
NSLog(@"Integer: %i ", myInt); |
Convertitore da RGB a UIColor
1
| #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] |
Passare parametri ad un NSTimer
Sfruttando il parametro userInfo è possibile inviare un puntatore ad un nostro oggetto al metodo richiamato da timer.
1 2 3 4 5 6 7 8 9 10 11 12 13
| [NSTimer scheduledTimerWithTimeInterval :1 target :self selector :@selector(timerMethod ) userInfo :objectPointer repeats :YES];
// ...
-(void)timerMethod :(NSTimer*)timer {
// Recupero il puntatore al mio oggetto
objectPointer = [timer userInfo ];
// oppure
[[timer userInfo ] myMethod ];
int a = [[timer userInfo ] myProperty ];
// che è lo stesso
int a = [objectPointer myProperty ];
} |
Tempo di esecuzione
Ecco un semplice modo per calcolare tempi brevi utili per verificare la velocità di esecuzione del codice:
1 2 3 4
| CFAbsoluteTime initialTime = CFAbsoluteTimeGetCurrent();
// ... code
CFAbsoluteTime finalTime = CFAbsoluteTimeGetCurrent();
NSLog(@"Tempo trascorso %f", finalTime-initialTime); |
Continua...
Sia sul Mac OS X che sull’iPhone OS, abbiamo la possibilità di accedere in modo semplice e diretto alle directory – più importanti – di sistema, che sono:
1 2 3
| NSHomeDirectory Returns the path to the current user’s home directory.
NSHomeDirectoryForUser Returns the path to a given user’s home directory.
NSTemporaryDirectory Returns the path of the temporary directory for the current user. |
Continua...
Se avete bisogno di generare numeri casuali in una applicazione Apple iPhone dovete mettere da parte Objective-C, in quanto non propone nessuna classe allo scopo. La soluzione viene dal C che propone: rand(), srand(), random(), srandom() e arc4random().
Continua...
Come già visto in Very short snippet: PHP word cut è più gradevole spezzare un testo a “parole”, in quanto si evita di tagliare una parola. C’è comunque chi preferisce tagliare contando i caratteri, in quanto rende i “tagli” più omogenei e simili tra loro, nonostante il forte rischio di tagliare una parola, mozzandola di netto!
Continua...
Oltre all’aspetto grafico del campo input del cerca di WordPress, è possibile intervenire su di esso a livello di codice in modo da renderlo un tantino interattivo quando si clicca al suo interno. Un effetto facile da realizzare permette di inserire un testo all’interno del campo cerca che scompare (e ricompare quando si esce dal campo lasciato vuoto) quando si clicca al suo interno.
Continua...
WordPress, come quasi tutti saprete, permette di pubblicare un post “post-datato” (ottimo gioco di parole). In pratica il post viene memorizzato con una data che deve ancora arrivare. Questo permette a molti blogger di “schedulare” (programmare) la pubblicazione di post senza preoccuparsi di essere fisicamente presenti in console per la pubblicazione vera e propria. Inoltre permette di mantenere la pubblicazione di post costante anche quando siamo in vacanza.
Continua...
In WordPress le categorie possono essere organizate in una struttura “padre” “figlio”. Questo significa che un singolo post può appartenere a più categorie. Può tornare utile in alcuni casi determinare, a prescindere dai “figli”, quale sia la categoria padre di un post:
Continua...
Niente di nuovo, ma lo segno per ricordarmelo: come aggiungere un immagine a tutti i link che aprono una nuova pagina:
1
| jQuery('a[@target=_blank]').addClass('external'); |
Continua...
Prendendo spunto da WordPress Hack #2 – Separare le categorie in colonne nella sidebar può tornare utile “spezzare” in due colonne la lista delle categorie di WordPress.
Continua...
Amministratore o sottoscrittore? Ecco un modo rapido per capirlo:
1 2 3 4 5 6 7 8 9
| global $user_ID;
//
$capabilities = get_usermeta ( $user_ID, 'wp_capabilities');
//
if ( is_array( $capabilities ) ) {
if( $capabilities['Administrator']==1 || $capabilities['administrator']==1 ) {
echo "Sei un amministratore";
}
} |
Continua...
Ultimi Commenti
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...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...