Objective-C常用的集合NSArray, NSDictionary, NSNumber介绍

Home / iOS MrLee 2015-10-22 2880

本文摘自互联网,未全部验证,可能部分存在字符或语法问题。
I. NSArray
首先是非常常用的NSArray,NSMutableArray。NSArray是一个初始化后就固定的静态数组。如果想对数组的元素进行插入,删除,更新等操作,就得使用 Objective-C 的动态数组NSMutableArray。
在LLVM4.0之前,NSArray的初始化方法如下。注: 以下的方法在LLVM4.0之后也可以继续使用。
//LLVM4.0之前 NSArray的初始化
    NSArray *oldOne = [NSArray arrayWithObjects:@"1st", @"2nd", @"3th", nil];
    // 取得数组第2个值
    NSString *s = [oldOne objectAtIndex:1];
    //在LLVM4.0之后,NSArray的初始化方法如下。
    NSArray *newOne =@[@"1st", @"2nd", @"3th"];
    // 取得数组第2个值
    NSString *ss = newOne[1];
    NSLog(@"%@---%@",s,ss);

特别要说一下NSMutableArray。LLVM4.0之前,如果你要更新数组的某个元素,一般使用下面的方法。
//LLVM4.0之前 NSMutableArray的初始化
NSMutableArray *oldMutable = [NSMutableArray arrayWithArray: old];
[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简化了这一个过程,可以用如下方式简单完成。
//LLVM4.0 之后
NSMutableArray *newMutable = [NSMutableArray alloc] init];
newMutable[2] = @ " myObject " ;

 
突然觉得世界清爽了不少,对于熟悉C语言和java等的童鞋来说,是不是觉得亲切多了?
关于NSDictionary和NSNumber的变化如下, 就不细说啦。
II.NSDictionary
一般性的写法:
dict = [ NSDictionary dictionaryWithObjects:@[o1, o2, o3] forKeys:@[k1, k2, k3]];

 
LLVM4.0之前后:
dict = @{ k1 : o1, k2 : o2, k3 : o3 };

 
III. NSNumber
一般性的写法:
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];
LLVM4.0之前后:
NSNumber *number;
number = @ 'X' ;
number = @ 12345 ;
number = @ 12345ul ;
number = @ 12345ll ;
number = @ 123.45f ;
number = @ 123.45 ;
number = @YES ;

 

本文链接:https://www.it72.com/6517.htm

推荐阅读
最新回复 (0)
返回