oc 字面量語法

使用字面量語法可以縮減代碼長度, 使其更爲易讀

    //少用這種方式
    NSNumber *someNumber0 = [NSNumber numberWithInt:1];

    //多用字面數值
    NSString *someString = @"Effective objectivity-C 2.0";
    NSNumber *someNumber1 = @1;
    NSNumber *floatNumber = @2.5f;
    NSNumber *doubleNumber = @3.14159;
    NSNumber *boolNumber = @YES;
    NSNumber *charNumber = @'a';

    //字面量語法也適用於下述表達式
    int x = 5;
    int y = 6;
    NSNumber *expressionNumber = @(x * y);



    //普通創建數組的方式
    NSArray *animals = [NSArray arrayWithObjects:@"cat", @"dog", @"mouse", @"badger", nil];
    //使用
    NSString *dog = [animals objectAtIndex:1];

    //創建字面量數組
    NSArray *animals1 = @[@"cat", @"dog", @"mouse", @"badger"];
    //使用
    NSString *cat = animals1[0];


    //如:
    id object1 = @1;
    id object2 = nil;
    id object3 = @3;

    //此數組中只有object1,因爲arrayWithObjects會依次處理各個參數,直到發現nil爲止
    NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3, nil];

    //而object2位nil,會引發異常,向數組中插入nil通常說明程序有錯,通過異常可以更快的發現這個錯誤
    //使用字面量數組比上面的方式更安全
    NSArray *arrayB = @[object1, object2, object3];

    NSLog(@"%@", arrayA[1]);
    NSLog(@"%@",arrayB[1]);



    //字典
    NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Matt", @"firstName",
                                @"Galloway", @"lastName",
                                [NSNumber numberWithInt:25], @"age",
                                nil];
    NSString *lastName = [personData objectForKey:@"lastName"];


    //字面量字典
    NSDictionary *personData2 = @{@"firstName" : @"Matt",
                                  @"lastName" : @"Galloway",
                                  @"age" : @25};

    NSString *lastName2 = personData2[@"lastName"];


    //可變數組字典
    NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", nil];
    NSMutableDictionary *mutabledictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                              @"Matt", @"firstName",
                                              @"Galloway", @"lastName",
                                              [NSNumber numberWithInt:25], @"age",
                                              nil];
    //可以這樣操作
    [mutableArray replaceObjectAtIndex:1 withObject:@"h"];
    [mutabledictionary setObject:@"jeck" forKey:@"lastName"];

    //也可以這樣來操作
    mutableArray[1] = @"h";
    mutabledictionary[@"lastName"] = @"jeck";

    //使用字面量語法創建出來的字符串 數組 字典對象都是不可變的(immutable)若想要可變版本的對象,則需要複製一份
    NSMutableArray *mutable = [@[@1, @2, @3, @4] mutableCopy];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章