使用字面量語法可以縮減代碼長度, 使其更爲易讀
//少用這種方式
NSNumber *someNumber0 = [NSNumber numberWithInt:1];
//多用字面數值
NSString *someString = @"Effective objectivity-C 2.0";
NSNumber *someNumber1 = @1;
NSNumber *floatNumber = @2.5f;
NSNumber *doubleNumber = @3.14159;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @'a';
//字面量語法也適用於下述表達式
int x = 5;
int y = 6;
NSNumber *expressionNumber = @(x * y);
//普通創建數組的方式
NSArray *animals = [NSArray arrayWithObjects:@"cat", @"dog", @"mouse", @"badger", nil];
//使用
NSString *dog = [animals objectAtIndex:1];
//創建字面量數組
NSArray *animals1 = @[@"cat", @"dog", @"mouse", @"badger"];
//使用
NSString *cat = animals1[0];
//如:
id object1 = @1;
id object2 = nil;
id object3 = @3;
//此數組中只有object1,因爲arrayWithObjects會依次處理各個參數,直到發現nil爲止
NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3, nil];
//而object2位nil,會引發異常,向數組中插入nil通常說明程序有錯,通過異常可以更快的發現這個錯誤
//使用字面量數組比上面的方式更安全
NSArray *arrayB = @[object1, object2, object3];
NSLog(@"%@", arrayA[1]);
NSLog(@"%@",arrayB[1]);
//字典
NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:
@"Matt", @"firstName",
@"Galloway", @"lastName",
[NSNumber numberWithInt:25], @"age",
nil];
NSString *lastName = [personData objectForKey:@"lastName"];
//字面量字典
NSDictionary *personData2 = @{@"firstName" : @"Matt",
@"lastName" : @"Galloway",
@"age" : @25};
NSString *lastName2 = personData2[@"lastName"];
//可變數組字典
NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", nil];
NSMutableDictionary *mutabledictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Matt", @"firstName",
@"Galloway", @"lastName",
[NSNumber numberWithInt:25], @"age",
nil];
//可以這樣操作
[mutableArray replaceObjectAtIndex:1 withObject:@"h"];
[mutabledictionary setObject:@"jeck" forKey:@"lastName"];
//也可以這樣來操作
mutableArray[1] = @"h";
mutabledictionary[@"lastName"] = @"jeck";
//使用字面量語法創建出來的字符串 數組 字典對象都是不可變的(immutable)若想要可變版本的對象,則需要複製一份
NSMutableArray *mutable = [@[@1, @2, @3, @4] mutableCopy];