字面量語法涉及到的類型有:express
NSString,NSNumber,NSArray,NSDictionary數組
如今先無論什麼叫字面量語法,先來看一下怎麼生成一個NSString類型對象並賦值到變量上:對象
NSString *someString = @"Jk_Chan";內存
能夠看出這裏的語法,直接使用@""即可以生成一個NSString對象,而不須要調用new或者alloc與init方法。字符串
一樣的,NSNumber,NSArray,NSDictionary也可使用字面量語法來生成對象,簡簡單單。it
NSNumber *intNumber = @1;io
NSNumber *intNumber = @1.5;table
NSNumber *boolNumber = @YES;ast
NSNumber *charNumber = @'a';變量
NSNumber *expressionNumber = @(2 * 8);
NSArray *animals = @[@"cat", @"dog"];//不須要nil結尾
取數組元素的時候更方便:
NSString *dog = animals[1];
須要注意一點就是,使用字面量語法的時候放入的元素不能爲nil,不然程序會崩潰,因此放入的時候須要確保放入的對象會不會是nil。
及時不使用字面量語法去初始化一個數組對象的時候,若是所放入的元素並非最後一個是nil,也就是中途的元素便出現nil,那麼nil以後的那些元素不會被存入到該數組對象中。
NSDictionary *personData = @{@"firstName" : @"Matt", @"lastName" : @"Galloway", @"age" : @28};
取字典值:
NSString *lastName = personData[@"lastName"];
這裏也須要說起一下,不管是否使用字面量語法,往字典內存放一個爲nil的值也會使程序奔潰。
可變版本數組與字典操做元素:
mutableArray[1] = @"dog";
mutableDictionary[@"lastName"] = @"Galloway";
這裏還有一點值得注意的就是:
使用字面量語法建立出來的字符串,數組,字典對象都是不可變的,若想生成可變版本,則須要複製一份,而且是應該使用mutableCopy:
NSMutableArray *mutable = [@[@1, @2, @3] mutableCopy];
最後來抄一下書本的要點:
應該使用字面量語法來建立字符串,數值,數組,字典。與建立此類對象的常規方法相比,這麼作更加簡明扼要。
應該經過去下標操做來訪問數組下標或字典中的鍵所對應的元素。
用字面量語法建立數組或字典時,若值中有nil,則會拋出異常。所以,務必確保值裏不含nil。