2013-01-15 10 views
6

Ich habe bei Autoboxing in Objective-C (here, zum Beispiel) suchen. Gibt es eine neue Syntax für das Unboxing?Objective-C Auto-Unboxing mit LLVM 4

Zum Beispiel möchte ich dies tun, aber kürzer:

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

die Syntax der zweiten Zeile schrecklicher ist. Gibt es eine neue Sprachfunktion, um damit umzugehen?

+1

Beachten Sie, dass dies weder Auto-Boxen noch Auto-Unboxing ist. Die '@ ...' Syntax für Skalare und Sammlungen, wie die Punkt-Syntax, Compiler einer Abkürzung für einen konkreten Methodenaufruf. Autoboxing würde bedeuten, dass ein nackter Skalar ('int x = 5;') würde, wenn sie eine Methode übergeben magische Weise verpackt werden, die 'NSNumber *' erfordert. (KVCs 'valueForKey:' ist zum Beispiel Auto-Boxing/Un-Boxing). – bbum

+1

Vielen Dank für das, @bbum. Korrekt, um sie "Objektliterale" zu nennen? –

Antwort

7
[oneNumber[0] intValue] 

Manchmal sind die alten Wege am besten.

+0

Ich vergesse immer, dass es Grenzen für die Punkt-Syntax ist. +1 großer Punkt –

0

Ein anderer Weg zu gehen, ist in der Objektwelt zu bleiben. Zum Beispiel:

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