在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
第三条:多用字面量语法,少用与之等价的方法几个类:NSString NSNumber NSArray NSDictionary 字面量语法是一种语法糖(syntactic sugar) NSString *someString = @"字符串字面量"; 字面量数值: NSNumber *someNumber = @1; 等价与 NSNumber *someNumber = [NSNumber numberWithInt:1]; NSNumber *intNumber = @1; int x = 5; NSNumber *expressionNumber = @(x * y); 字面量数组: 如果不用字面量:NSArray *animals = [NSArray arrayWithObjects:@"cat", @"dog", @"mouse", @"badger", nil]; 使用字面量语法: NSArray *animals = @[@"cat", @"dog", @"mouse", @"badger"]; //!若数组元素对象中有nil,使用字面量语法创建数组会抛出异常,语法糖效果等于先创建了一个数组,然后把方括号内的所有对象都加到这个数组中,抛出异常为: 'NSInavalidArgumentException' , reason:'.....attempt to insert nil object from objects[0]' 取某个下标对应的对象:(subscripting) 不用字面量: NSString *dog = [animals objectAtIndex:1]; 使用字面量: NSString *dog = animals[1]; 使用两种方法创建数组,其中object2为nil id object1 = /*...*/; id object2 = /*....*/; id object3 = /*...*/; NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3, nil]; NSArray *arrayB = @[object1, object2, object3]; 分析:arrayA只能创建object1 对象来,因为“arrayWithObject:“方法遇到nil会结束 arrayB会抛出异常,so使用字面量语法更为安全,可以发现错误 字面量字典 Dictionary ,映射型数据结构,键值对 NSDictionary *personData = [NSDictionarydictionaryWithObjectsAndKeys: @"Matt", @"firstName", @"Galloway", @"lastName", [NSNumber numberWithInt:28], @"age", nil]; 顺序是 《对象》,《键》 与 通常理解为 把“键”映射到“对象”,相反 字面量: NSDictionary *personData = @{@"firstName" : @"Matt", @"lastName" : @"Galloway", @"age" : @28}; 28区别原因:字典中的对象和键必须都是Objective-C对象,所以不能把28直接放进去,而要封装在NSNumber实例中才行 由键访问其值 : 不用字面量: NSString *lastNamge = [personData objectForKey:@"lastName"]; 使用字面量:NSString *lastName = personData[@"lastName"]; 可变数组与字典: 修改可变数组与字典内容的标准做法是: [mutableArray replaceObjectAtIndex:1 withObject:@"dog"]; [mutableDictionary setObject:@"Galloway"forKey:@"lastName"]; 换成去下标: mutableArray[1] = @"dog"; mutableDictionary[@"lastName"] = @"Galloway";
局限性: 除了字符串以外,所创建出来的对象必须属于Foundation框架。 使用字面量语法创建出来的字符串、数组、字典对象都是不可变的(immutable) 想要可变版本的对象,需复制一份:NSMutableArray *mutable = [@[@1, @2, @3]mutableCopy];
|
请发表评论