1、使用字面量方法来创建字符串、数值、数组、字典,与创建此类对象的常规方法相比,这么做更加简明扼要
NSString *someString = [NSString stringWithFormat:@"%@", string];
NSString *someString = @"string";
NSSNumber *someNumber = [NSNumber numberWithInt:1];
NSSNumber *someNumber = @1;
NSArray *animals = [NSArray arrayWithObjects:@"cat", @"dot", nil];
NSArray *animals = @[@"cat", @"dot"];
NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:@"Zhou", @"firstName", @"Hua", @"lastName", [NSNumber numberWithInt:28], @"age", nil];
NSDictionary *personData = @{ @"firstName": @"Zhou", @"lastName": @"Hua", @"age": @28};
2、应该通过取下标操作来访问数组下标或字典中的键说对应的元素
NSString *dog = animals[1];
3、用字面量语法创建数组或字典时,若之中有nil,这会抛出异常。因此务必确保值里不含nil
使用字面量语法创建数组时要注意,若数组元素对象中有nil,则会抛出异常,因为字面量语法实际上只是一种“语法糖”,其效果等于是先创建了一个数组,然后把方括号内的所有对象都加到这个数组中。
有如下代码
id object1;
id object2;
id object3;
NSArray *arrayA = [NSArray arrayWithObjects:object1, objec2, object3, nil];
NSArray *arrayB = @[object1, objec2, object3];
如果object1和object3都指向了有效的对象,object2是nil,那么会出现什么情况呢?按字面量语法创建,数组B会抛出异常,arrayA虽然能创建出来,但是其中却支行object1一个对象,原因在于“arrayWithObjects:”方法会依次处理各个参数,直到发现nil为止,由于object2是nil,所以该方法会提前结束。
字典也是同样的,使用“dictionaryWithObjectsAndKeys:”方法就会在首个nil之前停下
如果是可变数组的创建可用如下方法
NSMutableArray *mutable = [@[@1, @2, @3] mutableCopy];