iOS總結_IOS開發部分語法的簡化寫法

下列簡化寫法是IOS6.0以後的新寫法


NSNumber

    //簡化前的寫法:

    NSNumber *value1;

    value1 = [NSNumber numberWithInt:12345];

    value1 = [NSNumber numberWithFloat:123.45f];

    value1 = [NSNumber numberWithDouble:123.45];

    value1 = [NSNumber numberWithBool:YES];

    //簡化後的寫法:

    NSNumber *value2;

    value2 = @12345;

    value2 = @123.45f;

    value2 = @123.45;

    value2 = @YES;

    

    //裝箱表達式也可以採用類似的寫法:

    NSNumber *piOverSixteen1 = [NSNumber numberWithDouble: ( M_PI / 16 )];

    NSString *path1 = [NSString stringWithUTF8String: getenv("PATH")];

    //可以分別簡寫爲:

    NSNumber *piOverSixteen2 = @( M_PI / 16 );

    NSString *path2= @( getenv("PATH") );

    //對於字符串表達式來說,需要注意的是表達式的值一定不能是NULL,否則會拋出異常。


NSArray

    //對於NSArray的初始化來說,有非常多的寫法,這裏就不再一一羅列,我們直接看新的寫法

    NSArray *array;

    array = @[];          //空數組

    array = @[ a ];       //一個對象的數組

    array = @[ a, b, c ]; //多個對象的數組

    //編譯器在處理時:

    array = @[ a, b, c ];

    //編譯器生成的代碼:

    id objects[] = { a, b, c };

    NSUInteger count = sizeof(objects)/ sizeof(id);

    array = [NSArray arrayWithObjects:objects count:count];

    //注意,如果a,b,c對象有nil的話,運行時會拋出異常,這點和原來的處理方式不同,編碼的時候要多加小心。


NSDictionary

    //同樣,對於字典這個數據結構來說,有很多種初始化的方式,我們來看新的寫法:

    NSDictionary *dict;

    dict = @{};     //空字典

    dict = @{@"key1":@"value1" };     //包含一個鍵值對的字典

    dict = @{ @"key1" : @"value1", @"key2" : @"value", @"key3" : @"value3" }; //包含多個鍵值對的字典

    

    //採用上述寫法構建的容器都是不可變的,如果需要生成可變容器,可以傳遞-mutableCopy消息。例如

    NSMutableArray *mutablePlanets = [@[

                                        @"Mercury", @"Venus", @"Earth",

                                        @"Mars", @"Jupiter", @"Saturn",

                                        @"Uranus", @"Neptune"

                                        ] mutableCopy];

    

    NSMutableDictionary *dic=[@{ @"key1" : @"value1", @"key2" : @"value", @"key3" : @"value3" } mutableCopy];



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章