10 utili snippet per Apple iPhone

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);

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
                   <code></code> // blocco generico
                   [cc_actionscript][/cc_actionscript] // Actionscript
                   [cc_actionscript3][/cc_actionscript3] // Actionscript 3
                   [cc_css][/cc_css] // CSS Style Sheet
                   [cc_html][/cc_html] // HTML
                   [cc_js][/cc_js] // Javascript
                   [cc_objc][/cc_objc] // Objective-C
                   [cc_php][/cc_objc] // PHP
                   [cc_sql][/cc_sql] // SQL