zoukankan      html  css  js  c++  java
  • 多用字面量语法,少用与之等价的方法

    1、字面字符串
    摒弃:
    NSString *someString = [[NSString alloc] initWithString: @"Effective Objective-C 2.0"];
     
    提倡:
    NSString *someString = @"Effective Objective-C 2.0";
     
    2、字面数值
    摒弃:
    NSNumber *someNumber = [NSNumber numberWithInt: 1];
     
    提倡:
    NSNumber *intNumber = @1;
    NSNumber *floatNumber = @2.5f;
    NSNumber *doubleNumber = @3.14159;
    NSNumber *boolNumber = @YES;
    NSNumber *charNumber = @‘a’;
    亦可以
    int x = 5;
    float y = 6.32f;
    NSNumber *expressionNumber = @(x * y);
     
    3、字面量数组
    摒弃:
    NSArray *animals = [NSArray arrayWithObjects: @“cat”, @“dog”, @“mouse”, @“badger”, nil];
    NSString *dog = [animals objectAtIndex: 1];
     
    提倡:
    NSArray *animals = @[@“cat”, @“dog”, @“mouse”, @“badger”];
    NSString *dog = animals[1];
     
    提示:
    “arrayWithObjects:”方法会依次处理各个参数,直到发现nil为止。而字面量语法创建时如果有nil,则会抛出异常。这个微妙的差别表明,使用字面量语法更为安全。抛出异常令应用程序终止执行,这比创建好数组之后才发现元素个数少了要好。
     
    4、字面量字典
    摒弃:
    NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys: @“Matt”, @“firstName”, @“Galloway”, @“lastName”, [NSNumber numberWithInt: 28], @“age”, nil];
     
    NSString *lastName = [personData objectForKey: @“lastName"];
     
    提倡:
    NSDictionary *personData = @{@“firstName” : @“Matt”, @“lastName” : @“Galloway”, @“age” : @28}:
     
    NSString *lastName = personData[@“lastName"];
     
    提示:
    跟字面量数组类似。
     
    5、可变数组与字典
    摒弃:
    [animals replaceObjectAtIndex: 1 withObject: @“dog”];
    [personData setObject: @“Jon” forKey: @“lastName”];
     
    推荐:
    animals[1] = @“dog";
    personData[@“lastName”] = @“Jon”;
     
    6、局限性
    字面量语法有个小小的限制,就是除字符串之外,所创建出来的对象必须属于Foundation框架才行。如果自定义了这些类的子类,则无法用字面量语法创建其对象。要创建自定义子类的实例,必须采用“非字面量语法”。然而,由于NSArray、NSDictionary、NSNumber都是业已定型的“子类”,因此很少有人会从其中自定义子类,真要这样做也比较麻烦。而且一般来说,标准的实现已经很好了,无须再改动。
    创建字符串时可以使用自定义的子类,然而必须要修改编译器的选项才行。除非你明白这样做的后果,否则不鼓励使用此选项,用NSString就足够了。
    使用字面量语法创建出来的字符串、数组、字典对象都是不可变的。若想要可变版本的对象,则需要复制一份mutableCopy。这么做会多调一个方法,而且还要再创建一个对象,不过使用字面量语法所带来的好处还是多于上述缺点的。
     
  • 相关阅读:
    lunix下的redis数据库操作——set集合
    lunix下的redis数据库操作——hash(哈希)
    lunix下的redis数据库操作——list列表
    python操作mysql
    linux修改mysql表结构
    关于wordclou的一些简单操作
    SQL NOW() 函数:返回当前系统的日期和时间
    SQL ROUND() 函数:把数值字段四舍五入为指定的小数位数
    SQL LEN() 函数:返回文本字段中值的长度
    SQL MID() 函数:从文本字段中提取字符
  • 原文地址:https://www.cnblogs.com/cchHers/p/6931171.html
Copyright © 2011-2022 走看看