2013-01-15 13 views
6

Ho cercato di autoboxing in Objective-C (here, per esempio). C'è una nuova sintassi per l'unboxing?Objective-C Auto-unboxing con LLVM 4

Per esempio, io voglio fare questo ma più brevi: la sintassi

NSArray *oneNumber = @[@1]; 
int one = ((NSNumber *)oneNumber[0]).intValue; 

della seconda linea è orribile. C'è qualche nuova funzionalità linguistica per affrontare questo?

+1

Si noti che non si tratta né di auto-boxing né di auto-unboxing. La sintassi '@ ...' per scalari e collezioni è, come la sintassi del punto, la stenografia del compilatore per una chiamata al metodo concreto. Autoboxing implicherebbe che uno scalare nudo ('int x = 5;') sarebbe magicamente inscatolato quando passato a un metodo che richiede 'NSNumber *'. ('ValueForKey di KVC:' è auto-boxing/un-boxing, per esempio). – bbum

+1

Grazie per quello, @bbum. Corretto a chiamarli "oggetti letterali?" –

risposta

7
[oneNumber[0] intValue] 

A volte i vecchi modi sono i migliori.

+0

Ho sempre dimenticato che ci sono dei limiti alla sintassi del punto. +1 ottimo punto –

0

Un altro modo per andare è rimanere nel mondo degli oggetti. Ad esempio:

NSNumber *one = @1; 
NSArray *oneNumber = @[one]; 
one = oneNumber[0]; 
NSLog(@"one %@", one);