首页 / 软件开发 / C语言 / Objective-C中关于NSArray, NSDictionary, NSNumber等写法的进化
Objective-C中关于NSArray, NSDictionary, NSNumber等写法的进化2014-05-11 玖驎 从xcode4.4开始,LLVM4.0编译器为Objective-C添加一些新的特性。创建数组NSArray,哈希表NSDictionary, 数值 对象NSNumber时,可以像NSString的初始化一样简单方便。妈妈再也不担心程序写得手发酸了。有兴趣的朋友可以关注LLVM编译器的相关文档:http://clang.llvm.org/docs/ObjectiveCLiterals.html关于NSDictionary和NSNumber的例子来自:http://cocoaheads.tumblr.com/post/17757846453/objective-c- literals-for-nsdictionary-nsarray-andI. 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 *s = newOne[1];特别要说一下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";