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

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.