Usare performSelector per passare parametri interi o booleani

I messaggi (metodi) definiti nell’applicazione (Application delegate) principale possono essere invocati in modo rapido utilizzando performSelector:

1
2
[[[UIApplication sharedApplication] delegate]
    performSelector:@selector(applicationMessage)];

Se il nostro messaggio (applicationMessage) accetta un parametro in ingresso, questo può esssere inviato con:

1
2
3
4
5
6
7
8
9
10
// Messaggio nell'application delegate
- (void)applicationMessage:(NSString *)param {
    ....
}

// In qualche altro controller...

NSString *param = @"mia stringa";
[[[UIApplication sharedApplication] delegate]
    performSelector:@selector(applicationMessage:) withObject:param];

Dove è param rappresenta un puntatore. Alcuni messaggi, tuttavia, hanno come parametro un intero o un booleano. In questo caso è possibile eseguire un wrap del tipo:

1
2
3
4
5
6
7
8
9
10
// Messaggio nell'application delegate
- (void)applicationMessage:(BOOL)param {
    ....
}

// In qualche altro controller...

[[[UIApplication sharedApplication] delegate]
    performSelector:@selector(applicationMessage:)
    withObject:[NSNumber numberWithBool:YES]];

Attenzione, nel caso dei valori booleani, che se vogliano passare NO (false) bisogna usare nil:

1
2
[[[UIApplication sharedApplication] delegate]
    performSelector:@selector(applicationMessage:) withObject:nil];

Il wrap a puntatore, tramite NSNumber, può essere utilizzato per inviare qualsiasi tipo di dato “primitivo”, come interi, numeri a virgola mobile, etc…

1
2
3
[[[UIApplication sharedApplication] delegate]
    performSelector:@selector(applicationMessage:)
    withObject:[NSNumber numberWithInt: 32]];

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