【OC梳理】字面量(语法糖)

OC中,为了简化NSNumber、NSArray、NSDictionary的使用,以及提高程序的可读性(代码长度),有一些常用的字面量语法:

NSNumber

当需要把整数、浮点数、布尔值封装入OC对象中时,可以用NSNumber类。
如果不使用字面量语法,用以下方式创建:

  int aInt = 1;
  NSNumber *aNumber = [NSNumber numberWithInt:aInt];

如果食用字面量语法,可以简化为:

  int aInt = 1;
  NSNumber *aNumber = @(aInt);

如果是常量:

  NSNumber *aNumber = @1;

能够以NSSNumber实例表示的所有数据类型都可以使用该语法。

NSArray

如果不使用字面量语法,用以下代码创建和获取数组元素:

NSArray *anArray = [NSArray arrayWithObjects:@"aaa",@"bbb", nil];
NSString *aaa = [anArray objectAtIndex:0];

使用字面量语法,可以简化为:

NSArray *anArray = @[@"aaa",@"bbb"];
NSString *aaa = anArray[0];

使用字面量语法获取数组元素有一个好处就是,如果数组元素中有nil,就会抛出异常,这比创建好数组之后才发现元素个数少了要好很多,可以快速地发现问题。

NSDictionary

如果不使用字面量语法,用以下代码创建和获取字典中的元素:

    NSDictionary *anDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"key1",@"aaa",@"key2",@"bbb", nil];
    NSString *aaa =  [anDictionary objectForKey:@"key1"];

使用字面量语法,可以简化为:

NSDictionary *anDictionary = @{@"key1":@"aaa",@"key2":@"bbb"};
NSString *aaa = anDictionary[@"key1"];

同样的字面量语法创建时也是不能用nil的。

NSMutableArray

对于NSMutableArray,创建时不能使用字面语法,但是如果要替换某个元素,可以用:

aMutableArray[0]=@"123";

来代替:

[aMutableArray replaceObjectAtIndex:0 withObject:@"123"];

NSMutableDictionary

对于NSMutableDictionary,创建时不能使用字面语法,但是如果要新增一个元素,可以用:

anMutableDictionary[@"key3"] = @"ccc";

来替代

[anMutableDictionary setObject:@"ccc" forKey:@"key3"];
    原文作者:忠橙_g
    原文地址: https://www.jianshu.com/p/8e4997a715dc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞