第3条:多用字面量语法,少用与之等价的方法

2018-07-29  本文已影响6人  MrSYLong

字符串字面量

NSString *someString = @"Effective Objective-C 2.0";

字面数值

NSNumber *intNumber = @1;
NSNumber *floatNumber = @2.5f;
NSNumber *doubleNumber = @3.1415926;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @'a';

int x = 5;
float y = 3.14;
NSNumber *expressionNumber = @(x * y);

字面量数组

NSArray *animals = @[@"cat",@"dog",@"mouse",@"panda",];
NSString *panda = animals[3];

说明:
字面量语法实际是一种“语法糖”,其效果等于先创建一个数组,然后把方括号内的所有对象都加到这个数组中。

字面量字典

NSDictionary *personData = @{@"firstName":@"Tom",@"lastName":@"Galloway",@"age":@18};
NSString *lastName = personData[@"lastName"];

可变数组与字典

// 通过下标修改其中的元素值
mutableArray[1] = @"monkey";
mutableDic[@"lastName"] = @"SYL";

局限性
除字符串以外,所创建出来的对象必须属于Foundation框架才行。
如果自定义了这些类的子类,则无法用字面量语法创建其对象。
创建自定义子类的实例,必须采用“非字面量语法”。

使用字面量语法创建的字符串、数组、字典对象都是不可变的,要可变版本对象,需要复制一份:

NSMutableArray *mutable = @[@1, @2, @3].mutableCopy;

说明:
上面会多调用一个方法,而且还要再创建一个对象,但字面量语法的好处还是多于缺点。
上一篇下一篇

猜你喜欢

热点阅读