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的:

1 //NSArray的便利初始化
2 NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil];
3 //NSArray的便利構造器
4 NSArray *array2 = [NSArray arrayWithObjects:@"111", @"222", @"333", nil];

    獲取數組的元素

//獲取相應索引的元素
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)的簡化

    也引用我之前博客中得一段代碼吧

//不可變字典的初始化
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簡化

    我們可以這樣做

    ​    ​    ​    ​把基本類型包裝成對象的便利構造函數

    ​    ​    ​    ​    ​-(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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM