程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Objective-C中關於NSArray, NSDictionary, NSNumber等寫法的進化

Objective-C中關於NSArray, NSDictionary, NSNumber等寫法的進化

編輯:關於C語言

從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-and

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 *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";

突然覺得世界清爽了不少,對於熟悉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;

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved