对于做ios的小伙伴来说,或许会经常看到这样的语法: NSArray *ary = @[a1,a2,a3];这就是字面量语法了
神马是字面量语法呢?
字面量语法,是从objective-c 1.0开始有的,是一种不需要写alloc及init方法来分配并初始化对象的语法,通俗一点就是可以通过字面的文字,一眼可以看出这个对象是什么。
字面量的使用
并不是所有的对象都可以用字面量来创建,只有以下类可以使用:NSString,NSNumber,NSArray,NSDictionary
举例:
NSString *string = @" 字面量语法";
字面数值
如果我们要创建一个整形的NSNumber类型对象,常规写法
NSNumber *number = [NSNumber numberWithInt:1];
如果我们使用字面量语法:
NSNumber *number = @1;
2种语法对比,是不是字面量语法更要简洁,没有多余的语法,只包含数值,而且一看可以看出这是个什么类型的数字
NSNumber所有类型都可以使用这个语法,例如:
NSNumber *intNumber = @1;
NSNumber *floatNumber = @2.5f;
NSNumber *doubleNumber = @23.5321;
NSNumber *boolNumber = @YES;
字面量数组
NSArray *array = [NSArray arrayWithObjects:@"cat",@"dog",@"apple",nil];
上面是常规写法,现在用字面量写法:
NSArray *array = @[@"cat",@"dog",@"apple"];
除写法更加简洁了外,用字面量语法创建数组还有一个好处,可以有效的检查出nil对象。举例说明:
id obj1 =@"abc";
id obj2 =nil;
id obj3 =@"def";
NSArray *arrayA = [NSArrayarrayWithObjects:obj1,obj2,obj3,nil];
NSLog(@"%@",arrayA);
我们打印发现,控制台只显示abc,这是因为arrayWithObjects:方法会依次处理各个参数,遇到nil便终止。
现在我们用字面量语法
NSArray *arrayB = @[obj1,obj2,obj3];
NSLog(@"%@",arrayB);
现在我们运行程序,这时候大家会发现,报错了~~
意思是说我们插入了一个无效的对象
怎么样,这个时候大家就知道有异常,能很快的去查找错误了。使用字面量创建数组,更加安全,可以及时让我们发现错误~~
字典也可以用字面量语法
NSDictionary *dic =@{@"key1": @"obj1",
@"key2":@"obj2",
@"key3":@"obj3"};
同样的字面量语法创建字典,也可以有效的发现nil对象。
局限性
字面量语法有个小小的局限性,就是除了字符换以外,所创建出来的对象必须属于Foundation框架才行。不过综述,字面量语法所带来的好处多余上述缺点的,可以有效的提高我们编程效率。
ps:纯手敲啊~好累
,希望这篇文章能对你有帮助
