दिलचस्प पोस्ट
क्या टाइप किया गया है और # ग में ही परिभाषित? किसी वेबसाइट पर Google डिस्क में संग्रहीत फ़ाइलों को प्रदर्शित करना (उदा क्या पीडीओ एसक्यूएल इंजेक्शन को रोकने के लिए पर्याप्त बयान तैयार करता है? जावा में फंक्शन पॉइंटर क्या मैं केवल-ले जाने वाले प्रकार के एक वेक्टर को सूची-प्रारंभ कर सकता हूं? मैं PHP का उपयोग कर एक MySQL डाटाबेस से छवियों को कैसे संग्रह और पुनः प्राप्त कर सकता हूं? मैं अतुल्यकालिक कॉल से प्रतिक्रिया कैसे वापस करूँ? मैं .NET में एक स्ट्रिंग से डाईक्रिटिक्स (ऐक्सेंट्स) कैसे निकालूं? पॉइंटर के माध्यम से सी और सी ++ में फ़ंक्शन से स्थानीय डेटा रिटर्न करना जहां क्लॉज में स्ट्रिंग्स की सूची बनाने के लिए कॉमा से अलग स्ट्रिंग पार्स करें एंड्रॉइड में यूआरएल एन्कोडिंग व्यूपोर्ट का आकार प्राप्त करने के लिए jQuery का उपयोग करना जावास्क्रिप्ट में वस्तुओं की एक सरणी में एक मान खोजें Server.UrlEncode बनाम HttpUtility.UrlEncode आसान संभव जावास्क्रिप्ट उलटी गिनती टाइमर?

Xcode 4.4 रिलीज नोट्स में उल्लेखित "उद्देश्य-सी लिटरल्स" का विवरण क्या है?

मैं Xcode 4.4 के लिए जारी नोट्स के माध्यम से जा रहा था और यह देखा:

LLVM 4.0 कंपाइलर

एक्सकोड में अब ऐप्पल एलएलवीएम कंपाइलर संस्करण 4.0 शामिल है, जिसमें निम्न नईऑब्जेक्टिव-सी भाषा विशेषताओं शामिल हैं: […]
– उद्देश्य-सी लिखित: NSArray, NSDictionary और एनएसएनम्बर के लिए लिखे शब्द बनाएँ, जो एनएसएसटीरिंग के लिए शाब्दिक हैं

मैं इस सुविधा के बारे में चिंतित हूँ यह मेरे लिए पूरी तरह स्पष्ट नहीं है कि एनएसएसटीरिंग के काम के लिए कितनी लाइब्रेल्स हैं और NSArray , NSDictionary और NSNumber पर उनका उपयोग कैसे किया जा सकता है।

विवरण क्या हैं?

वेब के समाधान से एकत्रित समाधान "Xcode 4.4 रिलीज नोट्स में उल्लेखित "उद्देश्य-सी लिटरल्स" का विवरण क्या है?"

http://cocoaheads.tumblr.com/post/17757846453/objective-c-literals-for-nsdictionary-nsarray- और से शब्दशः कॉपी किए गए

उद्देश्य-सी लिटलल: अब एनएसएआरए, एनएसएटीपीएन, और एनएसएनम्बर के लिए एक शब्दशः बना सकते हैं (जैसे कि एनएसएसटीरिंग के लिए एक शब्दशः बना सकते हैं)

NSArray लिटरल्स

पहले:

 array = [NSArray arrayWithObjects:a, b, c, nil]; 

अभी व:

 array = @[ a, b, c ]; 

एनएसएप्शन लिटरल्स

पहले:

 dict = [NSDictionary dictionaryWithObjects:@[o1, o2, o3] forKeys:@[k1, k2, k3]]; 

अभी व:

 dict = @{ k1 : o1, k2 : o2, k3 : o3 }; 

एनएसएनम्बर लिटरल

पहले:

 NSNumber *number; number = [NSNumber numberWithChar:'X']; number = [NSNumber numberWithInt:12345]; number = [NSNumber numberWithUnsignedLong:12345ul]; number = [NSNumber numberWithLongLong:12345ll]; number = [NSNumber numberWithFloat:123.45f]; number = [NSNumber numberWithDouble:123.45]; number = [NSNumber numberWithBool:YES]; 

अभी व:

 NSNumber *number; number = @'X'; number = @12345; number = @12345ul; number = @12345ll; number = @123.45f; number = @123.45; number = @YES; 

[संपादित करें]

http://news.ycombinator.com/item?id=3672744 पर zxoq ने अधिक रोचक नया सबस्क्रिप्टिंग जोड़ा है (लीटरल्स के साथ जोड़ा गया):

 arr[1] === [arr objectAtIndex:1] dict[@"key"] === [dict objectForKey:@"key"] 

[संपादित करें 2]

नए डब्लू डब्लूडीसी 2012 सत्रों में नए ओबजेसी लिटरल्स पर चर्चा हुई। मैंने जानबूझकर फ़ाइल नामों और प्रत्येक स्लाइड का समय नहीं निकाला था, यदि आप ऐसा महसूस करते हैं तो आप उन्हें खुद के लिए ढूंढ सकते हैं ये अनिवार्य रूप से एक जैसी बात है जो इस पोस्ट में बताए गए हैं, लेकिन कुछ नई चीजें हैं जो मैं छवियों के ऊपर उल्लेख करूँगा।

कृपया ध्यान दें कि छवियाँ बहुत बड़ी हैं बस उन्हें अपने मूल आकार में देखने के लिए उन्हें एक और टैब में खींचें

लाइटरल्स और मुक्केबाजी

 [NSNumber numberWithint:42] [NSNumber numberWithDouble:10.8] [NSNumber numberWithBool:YES] [NSNumber numberWithint:6 + x * 2012] 

लाइटरल्स और मुक्केबाजी

 @42 @10.8 @YES @(6 + x * 2012) 

संग्रह सबस्क्रिप्टिंग

 [NSArray arrayWithObjects: a, b, c, nil] [array objectAtIndex:i] [NSDictionary dictionaryWithObjectsAndKeys: v1, k1, v2, k2, nil]; [dictionary valueForKey:k] 

संग्रह सबस्क्रिप्टिंग

 @[a, b, c] array[i] @{k1:v1, k2:v2} dictionary[k] 

@ # नंबर, @ {} शब्दकोश, @ "" स्ट्रिंग, @ [] एरेज़, @ () एक्सप्रेशन


यह हिस्सा नया है अभिव्यक्ति लिटरल

जब आपके पास अभिव्यक्ति (उदाहरण के लिए M_PI / 16 ) है, तो आपको इसे कोष्ठक के अंदर रखना चाहिए

यह सिंटैक्स अंक अभिव्यक्ति, बूलींस के लिए काम करता है, (सी-) स्ट्रिंग, बुलियन वैल्यू, एन्यूएम स्थिरांक, और यहाँ तक कि अक्षर तारों में एक इंडेक्स को ढूँढ रहा है!

अभिव्यक्ति लिटरल

 NSNumber *piOverSixteen = [NSNumber numberWithDouble: (M_PI / 16)]; NSNumber *hexDigit = [NSNumber numberWithChar:"0123456789ABCDEF"[i % 16]]; NSNumber *usesScreenFonts = [NSNumber numberWithBool:[NSLayoutManager usesScreenFonts]]; NSNumber *writingDirection = [NSNumber numberWithInt:NSWritingDirectionLeftToRight]; NSNumber *path = [NSString stringWithUTF8String: getenv("PATH")]; 

अभिव्यक्ति लिटरल

 NSNumber *piOverSixteen = @( M_PI / 16 ); NSNumber *hexDigit = @( "0123456789ABCDEF"[i % 16] ); NSNumber *usesScreenFonts = @( [NSLayoutManager usesScreenFonts] ); NSNumber *writingDirection = @( NSWritingDirectionLeftToRight ); NSNumber *path = @( getenv("PATH") ); 

वर्ण स्ट्रिंग के बारे में अधिक और / जब आप इस शाब्दिक सिंटैक्स का उपयोग कर सकते हैं:

बॉक्सिंग स्ट्रिंग एक्सप्रेशन

 NSString *path = [NSString stringWithUTF8String: getenv("PATH")]; for (NSString *dir in [path componentsSeparatedByString: @":"]) { // search for a file in dir... } 

बॉक्सिंग स्ट्रिंग एक्सप्रेशन

 NSString *path = @( getenv("PATH") ); for (NSString *dir in [path componentsSeparatedByString: @":"]) { // search for a file in dir... } 

कैसे सरणी काम करता है

कैसे सरणी काम करता है

 // when you write this: array = @[a, b, c ]; // compiler generates: id objects[] = { a, b, c }; NSUInteger count = sizeof(objects) / sizeof(id); array = [NSArray arrayWithObjects:objects count:count]; 

शब्दकोश कैसे काम करता है

शब्दकोश कैसे काम करता है

 // when you write this: dict = @{k1 : o1, k2 : o2, k3 : o3 }; // compiler generates: id objects[] = { o1, o2, o3 }; id keys[] = { k1, k2, k3 }; NSUInteger count = sizeof(objects) / sizeof(id); dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys count:count]; 

सरणी सदस्यता पर अधिक

अर्रे सबस्क्रिप्टिंग

 @implementation SongList { NSMutableArray *_songs; } - (Song *)replaceSong:(Song *)newSong atindex:(NSUinteger)idx { Song *oldSong = [_songs objectAtIndex:idx]; [_songs replaceObjectAtindex:idx withObject:newSong]; return oldSong; } 

अर्रे सबस्क्रिप्टिंग

 @implementation SongList { NSMutableArray *_songs; } - (Song *)replaceSong:(Song *)newSong atindex:(NSUinteger)idx { Song *oldSong = _songs[idx]; _songs[idx] = newSong; return oldSong; } 

शब्दकोश सबस्क्रिप्टिंग पर अधिक

शब्दकोश उपशीर्षक

 @implementation Database { NSMutableDictionary *_storage; } - (id)replaceObject:(id)newObject forKey:(id <NSCopying>)key { id oldObject = [_storage objectForKey:key]; [_storage setObject:object forKey:key]; return oldObject; } 

शब्दकोश उपशीर्षक

 @implementation Database { NSMutableDictionary *_storage; } - (id)replaceObject:(id)newObject forKey:(id <NSCopying>)key { id oldObject = _storage[key]; _storage[key] = newObject; return oldObject; } 

[संपादित करें 3]

माइक ऐश इन नए लीटरल के बारे में एक महान writeup है यदि आप इस सामान के बारे में अधिक जानना चाहते हैं, तो इसे जांचना सुनिश्चित करें


उद्देश्य-सी कंपाइलर ने NSConstantString क्लास के उदाहरणों के स्मृति लेआउट का ज्ञान NSConstantString , उर्फ __CFConstantString क्लास। RewriteObjCStringLiteral सोर्स कोड में lib/Rewrite/RewriteModernObjC.cpp में lib/Rewrite/RewriteModernObjC.cpp । संकलक केवल डेटा का उत्सर्जन करता है जो NSConstantString वर्ग के उदाहरणों के लेआउट से मेल खाता है।

शाब्दिक NSArray और NSDictionary उदाहरणों के लिए कुछ संभावनाएं हैं। वे कुछ ऐसा कर सकते हैं जो उन्होंने शाब्दिक तारों के लिए किया था – संकलक में उदाहरण लेआउट (एक विशेष उपवर्ग के लिए) और उस लेआउट में डेटा का उत्सर्जन करने के लिए हार्डकोड। या उनके पास कंपाइलर एमिट कोड हो सकता है जो रनटाइम पर बस एक उदाहरण बनाता है

"उद्देश्य- सी लाइटर" से

1) NSNumber , NSDictionary और NSArray लिक्टेलिक्स एक्सकोड 4.4 में उपलब्ध हैं।

2) NSDictionary और NSArray सबस्क्रिप्टिंग को " एक्सकोड 4.4 और ओएस एक्स 10.8 या बाद के एसडीके " या " एक्सकोड 4.5 और आईओएस 6 या बाद के एसडीके " की आवश्यकता होती है।

मुझे लगता है कि subscripting को रनटाइम समर्थन की आवश्यकता है और इसलिए IOS6 से पहले काम नहीं करेगा।