2010-04-22 9 views
5

Voglio fare un metodo che prende un CGFloat come riferimento.Come passare e impostare un CGFloat come riferimento?

Posso fare qualcosa del genere?

- (void)doStuff:(CGFloat*)floatPointer 

Immagino che questo deve apparire diverso da altri puntatori di oggetti che hanno due di quelle stelle. Anche io non sono sicuro se devo fare qualcosa di simile:

- (void)doStuff:(const CGFloat*)floatPointer 

E, naturalmente, nessuna idea di come assegnare un valore a quello CGFloat floatPointer. Forse &floatPointer = 5.0f;?

Qualcuno potrebbe dare alcuni esempi e spiegarli? Sarebbe bello!

risposta

9

Objective-C è ancora c, così

-(void) doStuff (CGFloat *) f 
{ 
    *f = 1.2; 
} 

chiamata con

CGFloat f = 1.0; 
[self doStuff:&f]; 
3

Se si passa un CGFloat per riferimento, quindi accedervi è semplice:

- (void)doStuff:(CGFloat*)floatPointer { 
    *floatPointer = 5.0f; 
} 

Spiegazione: come si stanno ottenendo un riferimento, è necessario de-riferimento il puntatore (con il *) per ottenere o imposta il valore.

+0

Questo è bene sapere. Grazie. Perché devo scrivere la parola chiave const davanti a CGFloat? – dontWatchMyProfile

+0

Non è possibile assegnare un valore a un puntatore const ... – kennytm

+0

La parola chiave const dice: "Ti passo il riferimento ma non ti è consentito modificarlo". –

2

se (i puntatori di odio e ;-) preferiscono Objective-C++ passano di riferimento, ciò che segue è un'alternativa :

-(void) doStuffPlusPlus:(CGFloat &) f 
{ 
    f = 1.3; 
} 

chiamata

CGFloat abc = 1.0; 
[self doStuffPlusPlus:abc]; 

e, è necessario rinominare il file sorgente da ???. M ???. Mm

Problemi correlati