多使用字面量語(yǔ)法囊颅,少用與之等價(jià)的方法
-
字面量數(shù)值
有時(shí)候需要將int湾戳,float弟劲,Bool類型封入為對(duì)象蟋软。這時(shí)候會(huì)用NSNumber類镶摘。
不使用字面量語(yǔ)法的寫(xiě)法:
NSNumber *someNumber = [NSNumber numberWithInt:1];
使用字面量語(yǔ)法的寫(xiě)法:
NSNumber *someNumber = @1岳守;
字面量語(yǔ)法看上去更直觀易懂凄敢,所以盡量使用字面量語(yǔ)法。
例:
NSNumber *intNumber = @1;
NSNumber *floatNumber = @1.23f;
NSNumber *boolNumber = @YES;
NSNumber *doubleNumber = @3.1415926;
NSNumber *charNumber = @'a';
//也可以直接用入表達(dá)式:
int x = 5;
int y = 3.14;
NSNumber *expressionNumber = @(x * y);
-
字面量數(shù)組######
不使用字面量數(shù)組語(yǔ)法代碼:
NSArray *animals = [NSArray arrayWithObjects:@"cat",@"dog",@"mouse", nil];//創(chuàng)建數(shù)組
NSString *animal = [animals objectAtIndex:0]; // 數(shù)組取值
使用字面量數(shù)組語(yǔ)法代碼:
NSArray *animals = @[@"dog",@"cat",@"mouse"];//創(chuàng)建數(shù)組
NSString *animal = animals[0]; // 數(shù)組取值
NSMutableArray *animals = [NSMutableArray arrayWithObjects:@"dog",@"cat",@"mouse", nil];//創(chuàng)建可變數(shù)組
除了字面量寫(xiě)法看上去清晰易懂外湿痢,還有一個(gè)問(wèn)題涝缝。
NSArray *arrays = [NSArray arrayWithObject: obj1 ,obj2 ,obj3, nil];//方法一
NSArray *arrays = @[obj1 ,obj2 ,obj3];//方法二
NSMutableArray *animals = @[@"dog",@"cat",@"mouse"].mutableCopy;//創(chuàng)建可變數(shù)組
在上面例子中扑庞,如果obj2是nil的時(shí)候,方法一不會(huì)報(bào)錯(cuò)拒逮,arrayWithObject會(huì)依次處理參數(shù)罐氨,直到為nil時(shí)候中止。而obj2為nil時(shí)滩援,方法會(huì)提前結(jié)束栅隐,進(jìn)而忽略obj3,這會(huì)導(dǎo)致意想不到的事情發(fā)生玩徊。
而在方法二里租悄,如果obj2出現(xiàn)為nil的時(shí)候,數(shù)組會(huì)拋出異常佣赖。所以在使用數(shù)組的時(shí)候要避免出現(xiàn)元素為nil的情況恰矩。使用字面量語(yǔ)法則可以快速發(fā)現(xiàn)這個(gè)問(wèn)題。
-
字面量字典
“字典”時(shí)一種映射數(shù)據(jù)結(jié)構(gòu)憎蛤,可向其中添加鍵值對(duì)。非字面量方法如下:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"age",@1,
@"name",@"father",
@"sex",@"man",nil];// 創(chuàng)建字典
NSString *name = [dictionary objectForKey:@"name"];//獲取值
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"age",@1,
@"name",@"father",
@"sex",@"man", nil];//創(chuàng)建可變字典
字面量字典方法:
NSDictionary *dictionary = @{@"age":@1,
@"name":@"father",
@"sex":@"man"};// 創(chuàng)建字典
NSString *name = dictionary[@"name"];// 獲取值
NSDictionary *dictionary = @{@"age":@1,
@"name":@"father",
@"sex":@"man"}.mutableCopy;//創(chuàng)建可變字典
和數(shù)組一樣出現(xiàn)nil 會(huì)拋出異常有助于查錯(cuò)纪吮。
總結(jié)要點(diǎn):
1.使用字面量語(yǔ)法會(huì)更加簡(jiǎn)單明了俩檬。
2.防止出現(xiàn)nil,便于查錯(cuò)碾盟。
3.使用取下標(biāo)操作數(shù)組取鍵查找字典元素棚辽,