2012-03-05 11 views
7

Eventuali duplicati:
Objective-C Default Argument ValueCome definire un valore di argomento predefinito per un metodo in ios?

non riuscivo a trovare un modo per definire un argomento di default ad una funzione in ios come si farebbe normalmente in C++. È possibile in iOS? Se no c'è un lavoro in giro raccomandato?

+0

potete mescolare C++ e il codice Obj-C – Felix

+0

Credo che si intende non i metodi Obj-C funzioni – Felix

+0

sì - volevo dire metodo Obj C dispiace – tiguero

risposta

28

Questo non è possibile in Objective-C. Una possibilità è quella di fare qualcosa di simile per ottenere la stessa funzionalità:

- (void)someMethodThatTakesAString:(NSString *)string 
{ 
    if (string == nil) string = @"Default Value"; 

    // Use string 
} 

Se stai cercando la possibilità di omettere un argomento del tutto, il tipico modo che è fatto in Objective-C è quello di avere più metodi con set di argomenti sempre più specifici:

- (void)doSomethingWithOptionA:(BOOL)optionA andOptionB:(int)optionB 
{ 
    // Do something using options to control exactly what's done 
} 

- (void)doSomethingWithOptionA:(BOOL)optionA 
{ 
    [self doSomethingWithOptionA:optionA andOptionB:42]; // Where 42 is the default for optionB 
} 

- (void)doSomething; 
{ 
    [self doSomethingWithOptionA:NO]; // NO is the default for optionA 
} 

Poi, se si vuole doSomething con solo gli argomenti di default, si può chiamare -doSomething. Se si desidera impostare optiona, ma non si preoccupano di optionB, è possibile chiamare -doSomethingWithOptionA: ecc

Infine, vale la pena notare che è possibile utilizzare C++ di scrivere per iOS, e si può anche mescolare Objective-C e C++ usando Objective-C++. Detto questo, pensa sempre attentamente al modo migliore di fare le cose nell'ambiente che stai utilizzando. Non cercare di forzare idiomi e schemi C++ su Objective-C e Cocoa. Sono diversi e sono pensati per essere così. Spesso è molto facile individuare un programmatore C++ che non ha abbandonato le convenzioni C++ durante la transizione alla scrittura del codice Objective-C, e che di solito non è una buona cosa.

1

Date un'occhiata a risposte qui: Objective-C Default Argument Value

Che cosa si dovrebbe fare è definire un metodo che prende tutti gli argomenti e poi scrivere i metodi di convenienza che prendono un numero di argomenti, poi girarsi e chiamare il metodo più a lungo con il default valori che si vogliono

Problemi correlati