• Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法


    Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法

      从xcode4.4开始,LLVM4.0编译器为Objective-C添加一些新的特性。创建数组NSArray,字典NSDictionary, 数值对象NSNumber时,可以像NSString的初始化一样简单方便。妈妈再也不担心程序写得手发酸了。

       A.   NSArray

      首先是非常常用的NSArray,NSMutableArray。NSArray是一个初始化后就固定的静态数组。如果想对数组的元素进行插入,删除,更新等操作,就得使用Objective-C 的动态数组NSMutableArray。

      在LLVM4.0之前,NSArray的初始化方法如下。注: 以下的方法在LLVM4.0之后也可以继续使用。

      1.NSArray的初始化赋值  

      //LLVM4.0之前 

      NSArray *oldOne = [NSArray arrayWithObjects:@"1st", @"2nd", @"3th", nil];

      //在LLVM4.0之后

      NSArray *newOne =@[@"1st", @"2nd", @"3th”];

      2.获取NSArray的某个值

      //LLVM4.0之前 

      NSString *s = [oldOne objectAtIndex:1];

      //在LLVM4.0之后

      NSString *s = newOne[1];

      3. NSMutableArray 更新/替换某个元素

      //LLVM4.0之前  

      [mutable replaceObjectAtIndex:1 withObject:@"disposed"]; //更新某个元素

      在编写一些常用算法时,下面的特性导致编写起来有一点麻烦。

      /*想更新NSMutableArray的某个元素?请先初始化这个元素*/

      NSMutableArray *oldMutable = [[NSMutableArray alloc] init]];

      /*必须如下给每个元素赋一个初值,否则exception会发生

      for (int h = 0; h < 5; h++) {

      [oldMutable addObject:@"1"];

      }

      @try{

      [mutable replaceObjectAtIndex:1 withObject:@"disposed"];

      }

      @catch(NSException *exception){

      NSLog(@“%@“, [exception description]);

      }

      //LLVM4.0之后

      NSMutableArray *newMutable = [NSMutableArray alloc] init];

      newMutable[2] = @"myObject";

      

      关于NSDictionary和NSNumber的变化如下, 就不细说啦。

      B. NSDictionary

      1.NSDictionary的初始化赋值

      一般性的写法:

      dict = [NSDictionary dictionaryWithObjects:@[o1, o2, o3]

      forKeys:@[k1, k2, k3]];

      LLVM4.0之前后:

      dict = @{ k1 : o1, k2 : o2, k3 : o3 };

      如:dict = @{ @"a" : @100,  @"b": @200,  @"c" :@300 };

      2.获取NSDictionary中某个键对应的值

       NSNumber *num = dict[@"b"];

      C. NSNumber

      1. 一般性的写法:

      NSNumber *number;

      number = [NSNumber numberWithChar:'X'];

      number = [NSNumber numberWithInt:12345];

      number = [NSNumber numberWithUnsignedLong:12345ul];

      number = [NSNumber numberWithLongLong:12345ll];

      number = [NSNumber numberWithFloat:123.45f];

      number = [NSNumber numberWithDouble:123.45];

      number = [NSNumber numberWithBool:YES];

      2. LLVM4.0之前后:

      NSNumber *number;

      number = @'X';

      number = @12345;

      number = @12345ul;

      number = @12345ll;

      number = @123.45f;

      number = @123.45;

      number = @YES;

    iOS开发者交流群:180080550
  • 相关阅读:
    个人学习代码保存:例8.在存储过程中使用简单的事务处理
    个人学习代码保存:例6.多文件上传
    泛型 .net学习日记
    .net 点击刷新验证码问题
    个人学习代码保存:例11.读取Excel文件中的数据
    个人学习代码保存:例12.读取GridView文件中的数据到Excel文件
    个人学习代码保存:例5.利用标准FileUpload单文件上传
    Android视频采集
    Android视频采集+H264编码
    实时传输协议(RTP)和实时控制协议(RTCP)
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/4805714.html
Copyright © 2020-2023  润新知