• Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)


         当使用Objective-C的时候,你总会遇到Foundation 框架中的一些类,这些类包含NSString,NSNumber,NSArray和NSDictionary,这些数据结构都是自解释的。
         Objective-C以简明具体的语法而著名,自从oc1.0有一个简单的方式定义一个NSString变量,我们能够这样声明一个字符串变量
    NSString *someString=@“Hello Lves";
         没有这样的语法之前,我们创建一个字符串变量须要先alloc然后init。Literal(简明)语法已经在oc2.0之后扩展到了NSNumber,NSArray和NSDictionary.使用简明语法能够降低代码量和更加easy阅读。
    Literal Number
         NSNumber变量能够封装一些基本类型变量,像:int,float,bool等,在未使用literal之前,或许你会这样定义
    NSNumber *someNumber=[NSNumber numberWithInt:1];
         整数1被放进NSNumber中,当然有比这更好的方法,实例:
     NSNumber *intNumber=@1;
        NSNumber *floatNumber=@2.5;
        NSNumber *doubleNumber=@3.14159;
        NSNumber *boolNumber=@YES;
        NSNumber *charNumber=@'a';
    

    简明语法也能够这样表述:
        int x=5;
        float y=6.32f;
        NSNumber *expressionNumber=@(x*y);
    像上边那样定义而不是採用之前的语法因此使用简明语法定义NSNumber变量是十分实用的。

    Literal Arrays
         数组是常常使用的类型,在2.0之前我们能够这样定义一个数组:
    NSArray *animals=[NSArray arrayWithObjects:@“cat”,@“dog”,nil];
    然而使用Literal语法之后,你仅仅须要这样做:
    NSArray *animals=@[@“cat”,@“dog"];

    对于数组还不止这些,平时操作数组获得一个指定下标下的内容我们能够使用objectAtIndex方法:
    NSString *dog=[animals objectAtIndex:1];

    使用letaral,你能够这样做:
     NSString *dog=animals[1];

    使用简明语法的时候有一点须要注意:假设数组中有一个对象是空,它会报异常,由于literal语法实在栈上动态的创建和加入对象的,你得到的异常例如以下:

    以下看以下一个样例:
        id obj1=@"wildcat";
        id obj2=@"Lves Li";
        id obj3=@"lele";
       
        NSArray *arrayA=[NSArray arrayWithObjects:obj1,obj2,obj3, nil];
        NSArray *arrayB=@[obj1,obj2,obj3];

    假如obj2=nil;此时使用简明语法定义的数组arrayB就会报异常,而arrayA不会,可是arrayA中仅仅有一个变量obj1。由于arrayWithObjects: 方法直到遇到nil就不加入变量了而不会报异常。
    这点不同说明了使用literal更加的安全。抛出异常使应用崩溃比创建一个包括比期望变量少的数组要好,报出异常意味着我们能够更easy发现问题进而解决。


    Literal Dictionary

    未完待续:转载请注明原文转自:http://blog.csdn.net/wildcatlele











  • 相关阅读:
    线程正常终止pthread_exit,pthread_join,pthread_kill,pthread_cancel,sigwait,sigaddset
    线程的创建,pthread_create,pthread_self,pthread_once
    线程和进程的关系
    改变进程的优先级,nice,getpriority,setpriority
    setuid和setgid
    等待进程结束wait,waitpid
    执行新程序以及环境变量
    进程退出exit、_exit、abort
    VBA 判断单元格是否为公式,可用于数组
    ADODB 调用存储过程
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3940151.html
Copyright © 2020-2023  润新知