Http://cocoaheads.tumblr.com/post/17757846453/objective-c-literals-for-nsdEDIA-nsarray-and से कॉपी की गई शब्दश :
उद्देश्य-सी शाब्दिक: एक अब NSArray, NSDictionary और NSNumber के लिए शाब्दिक बना सकता है (जैसे कोई NSString के लिए शाब्दिक बना सकता है)
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 लिटरल
पहले:
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;
[संपादित करें]
zxoq पर http://news.ycombinator.com/item?id=3672744 ने और अधिक दिलचस्प नई सबस्क्रिप्टिंग जोड़ी है। (शाब्दिक अर्थों के साथ जोड़ा गया):
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
उदाहरण के लिए) तो आपको इसे कोष्ठक के अंदर रखना चाहिए।
यह सिंटैक्स, अंक (C-) स्ट्रिंग, बूलियन मान, एनम कॉन्स्टेंट, और यहां तक कि वर्ण स्ट्रिंग में एक इंडेक्स खोजने के लिए अंक भाव, बूलियन के लिए काम करता है!
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;
}
[संपादित करें ३]
माइक ऐश ने इन नए साहित्यकारों के बारे में एक शानदार लिखा है यदि आप इस सामान के बारे में अधिक जानना चाहते हैं, तो इसे देखना सुनिश्चित करें ।