ios 点滴之 多用字面量语法,少用与之等价的方法

使用字面量语法,可以缩短源代码长度,使其更为易读

1. 字面数值

     有时需要把整数,浮点数,布尔值封入 Object-C 对象中,这种情况下可以使用NSNumber类,该类可处理多种类型的数值,若不用字面量,那么就需要按下述方式创建实例:

  NSNumber *someNumber = [NSNumber numberWithInt:1];
    
  //使用字面量方式:
  NSNumber *someNumber = @1;
    
  //把其他类型实例成NSNumber 类型
  NSNumber *doubleNumber = @3.1415;
    
  NSNumber *boolNumner = @YES;
    
  NSNumber *charNumber = @'a';
    
  // 字面量语法适用于表达式
  int x = 8;
  float y = 0.3f;
  NSNumber *expressionNumber = @(x * y);

 

2. 字面量数组

  NSArray *animals = [NSArray arrayWithObjects:@"cat",@"dog",@"mouse",@"badger", nil];
    
  // 字面量方式
  NSArray *animals = @[@"cat",@"dog",@"mouse",@"badger"];
    
  // 取某个下标对应的对象
  NSString *dog = [animals objectAtIndex:1];
    
  // 字面量方式
  NSString *dog = animals[1];

   使用字面量数组时如果某一项为nil 则会抛出异常。这比创建数组之后才发现少了元素要好,可以更快的发现这个错误。

3. 字面量字典

    // 这种写法不容易读懂
    NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:@"Matter",@"firstName",@"Galloway",@"lastName",@28,@"age", nil];
    
    // 字面量字典创建  key:value
    NSDictionary *personData = @{@"firstName" : @"Matter"
                                 ,@"lastName" : @"Galloway"
                                 ,@"age"      : @28};
    
    // 读取
    NSString *lastName = [personData objectForKey:@"lastName"];
	
    // 字面量方式读取
    NSString *lastName = personData[@"lastName"];

4. 可变数组和字典

    // 对于可变数组 替换其中的一个元素值
    NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithObjects:@"one",@"two", nil];
    [mutableArray replaceObjectAtIndex:1 withObject:@"three"];
    
    // 取下标操作
    mutableArray[1] = @"three";
    
    // 对于可变字典 替换其中的一个元素值
    NSMutableDictionary *mutableDic =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"one",@"o",@"two",@"t", nil];
    
    [mutableDic setObject:@"three" forKey:@"o"];
    
    // 取下标操作
    mutableDic[@"o"] = @"three";

要点:

        应该使用字面量语法来创建字符串、数值、数组、字典。与创建此类对象的常规方法相比,这么做更加简明扼要。

        应该通过取下标操作来访问数组下标或字典中的键所对应的元素

        用字面量语法创建数组或字典时,若值中有nil , 则会抛出异常,因此,务必确保值里不含nil


  原文。 Effective Objective-c 2.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值