• ios 高效开发-----字面量


    Objective-C(一下简称OC) 的语法比较繁杂,但是从OC 1.0 版本起,有一种非常简便的方式能创建NSString 对象,那就是字面量,也就是本篇文章的核心内容。其语法如下:

    字面字符串

    NSString * string = @"i'm a string";
    

    如果不用这种方法的话,就要用常见得alloc及init 方法

    字面数值

    OC提供的用于处理数值(整数、浮点数、bool值)的类是NSNumber,该类提供的主要类方法如下

    如果不是用字面量,创建方式如下:

    NSNumber * number = [NSNumber numberWithInt:2];
    

    字面量方式创建:

    NSNumber * intNumber    = @1;
    NSNumber * floatNumber  = @1.2f;
    NSNumber * doubleNunber = @3.14159;
    NSNumber * boolNumber   = @YES;
    NSNumber * charNumber   = @'a';
    

    字面量数组

    数组是常用的数据结构,使用方式如下:

    //使用系统方法创建
    NSArray * array = [NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
    //取值
    NSString * str = [array objectAtIndex:0];
    
    
    //使用字面量创建
    NSArray * anotherArray = @[@"a",@"b",@"c",@"d"];
    //取值
    NSString * anotherStr = anotherArray[0];
    

    使用字面量创建数组更安全,例如对上述数组稍作修改,如下:

    //使用系统方法创建
    NSArray * array = [NSArray arrayWithObjects:@"a",@"b",nil,@"d", nil];
    //不报错:可以插入nil,nil作为结束标志,此时@"d"不能插入到数组中;
    //取值
    NSString * str = [array objectAtIndex:0];
    //使用字面量创建
    NSArray * anotherArray = @[@"a",@"b",nil,@"d"];
    //报错因为字面量数组中不能插入nil;
    //取值
    NSString * anotherStr = anotherArray[0];
    

      

    使用字面量语法更安全,抛出异常使应用程序终止执行,比创建好数组以后发现元素少了要好。

    字面量字典

    OC中也经常用到字典,OC创建字典的方式非常令人不解,写法也很难懂,OC的创建方式如下:

    //系统常用的创建方式,这种方式 值在前,键在后,可读性不强
    NSDictionary * dic        = [NSDictionary dictionaryWithObjectsAndKeys:@"dog",@"animal",@"boy",@"kid",@"bread",@"food", nil];
    //取dog
    NSString     * dog        = [dic objectForKey:@"animal"];
    
    //使用字面量语法创建,键在前,值在后,简洁易懂
    NSDictionary * anotherDic = @{@"animal":@"dog",@"kid":@"boy",@"food":@"bread"};
    //取值
    NSString     * anotherDog = anotherDic[@"animal"];
    

    使用字面量的优点:

    1、用字面量创建的对象,与传统的创建方式相比,更加简明。

    2、可以通过去小标操作访问数组或字典中得键所对应的元素。

    3、用字面量创建数组,若元素为nil,会提示错误。

    缺点:

    字面量除了字符串以外,所创建出来的对象必须属于Foundation框架才行,如果是自定义的这些类的子类,则无法使用字面量语法创建其对象。

      

  • 相关阅读:
    [工作代码]dom4j解析实例
    dom4j解析xml报错:Nested exception: org.xml.sax.SAXParseException: White space is required between the processing instruction target and data.
    小米蓝牙耳机使用说明书
    猎豹浏览器(chrome内核)屏蔽视频广告
    [转载]python的常用代码模板
    [转载]存储过程
    存储过程格式及实例
    springboot(十八):解决跨域问题
    springboot(十八):CORS方式实现跨域
    springboot(十七):过滤器(Filter)和拦截器(Interceptor)
  • 原文地址:https://www.cnblogs.com/tianlin106/p/4514276.html
Copyright © 2020-2023  润新知