2013-01-15 16 views
6

के साथ उद्देश्य-सी ऑटो-अनबॉक्सिंग मैं उद्देश्य-सी (here, उदाहरण के लिए) में ऑटोबॉक्सिंग देख रहा हूं। क्या अनबॉक्सिंग के लिए कोई नया वाक्यविन्यास है?एलएलवीएम 4

उदाहरण के लिए, मैं लेकिन छोटे ऐसा करना चाहते हैं:

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

दूसरी पंक्ति की वाक्य रचना भीषण है। क्या इससे निपटने के लिए कोई नई भाषा सुविधा है?

+1

ध्यान दें कि यह न तो ऑटो-मुक्केबाजी और न ही ऑटो-अनबॉक्सिंग है। स्केलर और संग्रह के लिए '@ ...' वाक्यविन्यास, कंक्रीट विधि कॉल के लिए डॉट सिंटैक्स, कंपाइलर शॉर्टेंड की तरह है। ऑटोबॉक्सिंग का अर्थ यह होगा कि एक नंगे स्केलर ('int x = 5;') को जादुई रूप से बॉक्स किया जाएगा जब किसी विधि को पास किया जाता है जिसके लिए 'NSNumber *' की आवश्यकता होती है। (केवीसी का 'मूल्यफोरकी:' उदाहरण के लिए ऑटो-मुक्केबाजी/अन-मुक्केबाजी है)। – bbum

+1

इसके लिए धन्यवाद, @bbum। उन्हें "वस्तु अक्षर" कहने के लिए सही है? –

उत्तर

7
[oneNumber[0] intValue] 

कभी-कभी पुराने तरीके सबसे अच्छे होते हैं।

+0

मैं हमेशा भूल जाता हूं कि डॉट सिंटैक्स की सीमाएं हैं। +1 महान बिंदु –

0

ऑब्जेक्ट दुनिया में रहने का एक और तरीका है। उदाहरण के लिए:

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