Objective-C中的語法糖

  寫這篇博客源於一個疑問:「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);
相關文章
相關標籤/搜索