寫這篇博客源於一個疑問:「WoK~, 這也行?!」。剛接觸OC不久,今天作深淺拷貝的測試,無心中把獲取NSArray的值寫成了用下標獲取的方式。當時把注意力放在了深淺拷貝的內存地址分析上了,就沒太在乎,測試作完啦,在回顧的時候發現數組是用下標的方式獲取的! 因而就有了個疑問,在OC中這樣寫也行?不是NSArray中有一個方法叫作objectAtIndex來專門獲取數組的元素嘛,嗯~用下標也行?此時內心竊喜,能夠簡化一下數組訪問元素的方式了,又能夠偷懶啦!!爲了更好的偷懶,因而去百度上Google啦一下這是‘ Xcode 4.4中LLVM compiler 4.0’ 引入的新特性(2012年WWDC發佈的東西)。到這小菜本人就有柳暗花明又一村的感受啦~就能夠好好的偷一下懶啦~因而系統的總結了一下引入的新的特性,話很少說,Coder說話哪能少的了code呢!ludashi~走起~(雖然是12年的東西,這不剛學蠻~在OC中用感受挺新鮮的,簡化後對字典的初始化感受和PHP有點類似~感受見到親人啦~)數組
問題是數組引發的那麼就從數組開始吧函數
1.通常數組的初始化和訪問數組元素是這樣的測試
在以前的博客中我是這樣初始化NSArray的:spa
1 //NSArray的便利初始化 2 NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil]; 3 //NSArray的便利構造器 4 NSArray *array2 = [NSArray arrayWithObjects:@"111", @"222", @"333", nil];
獲取數組的元素code
//獲取相應索引的元素 id element = [array1 objectAtIndex:0]; NSLog(@"array1_count = %d, array[0] = %@", count, element);
簡化後的數組初始化和訪問的作法以下對象
1 //NSArray的定義 2 NSArray *array = @[@"lu", @"da", @"shi", @YES, @123]; 3 int count = (int)[array count]; 4 5 for (int i = 0; i < count; i++) 6 { 7 NSLog(@"%@", array[i]); 8 }
2.對字典(NSDictionary)的簡化blog
也引用我以前博客中得一段代碼吧索引
//不可變字典的初始化 NSDictionary *dictionay = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil]; id value = [dictionay objectForKey:@"key1"]; NSLog(@"key1 => %@", value);
咱們還能夠這樣作內存
//NSDictionary的定義簡化 NSDictionary *dictionary = @{ @"key0" : @"value0", @"key1" : @"value1", @"key2" : @"value2" }; NSLog(@"key2 => %@", dictionary[@"key2"]);
3.對NSNumber簡化element
咱們能夠這樣作
把基本類型包裝成對象的便利構造函數 -(id) initWithChar : (char) value; -(id) initWithInt : (int) value; -(id) initWithFloat : (float) value; -(id) initWithBool: (BOOL) value; 把基本數據類型包裝成對象的便利構造器 +(id) numberWithChar : (char) value; +(id) numberWithInt : (int) value; +(id) numberWithFloat : (float) value; +(id) numberWithBool : (BOOL) value;
咱們也能夠這樣作,說明:在char轉換爲NSNumber是存的是ASCII碼的形式,c輸出爲97
//NSNumber的簡化 NSNumber *a = @123; NSNumber *b = @11.2; NSNumber *c = @('a'); NSLog(@"a = %@, b = %@, c = %@", a, b, c);