Objective-C字面量语法总结

我们在编写Objective-C代码时要尽量使用字面量语法,不仅使代码更简单,同事也更易读懂。我们可以用alloc及init方法来分配并初始化NSString对象,也可以这样写:

NSString *someString = @"Objective-C字面量语法总结";

也能用这种字面量语法来声明NSNumber、NSArray、NSDictionary类的实例。使用字面量语法(literal syntax)可以缩减源代码长度,使其更为易读。

字面量数值NSNumber

不使用字面量创建NSNumber类型:

 NSNumber *someNumber = [NSNumber numberWithInt:1];

使用字面量创建NSNumber类型:

 NSNumber *someNumber = @1;

能够以NSNumber实例表示的所有数据类型都可使用该语法。例如:

NSNumber *intNumber = @1;
NSNumber *floatNumber = @2.5f;
NSNumber *doubleNumber = @3.14159;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @'a';

字面量数组NSArray

不使用字面量创建NSArray类型:

NSArray *animals =
    [NSArray arrayWithObjects:@"cat", @"dog",
                             @"mouse", @"badger", nil];

使用字面量创建NSArray类型:

 NSArray *animals = @[@"cat", @"dog", @"mouse", @"badger"];

在数组中通过下表来取某个对象时,不使用字面量语法:

 NSString *dog = [animals objectAtIndex:1];

使用字面量语法:

 NSString *dog = animals[1];

此外,使用字面量语法更为安全。例如:

    id object1 = @1;
    id object2 = nil;
    id object3 = @3;
    //arrayWithObjects
    NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3, nil];
    //字面量语法
    NSArray *arrayB = @[object1, object2, object3];

上面这段代码按字面量语法创建数组arrayB时会抛出异常。arrayA虽然能创建出来,但是其中却只含有object1一个对象。原因在于,“arrayWithObjects:”方法会依次处理各个参数,直到发现nil为止,由于object2是nil,所以该方法会提前结束。抛出异常令应用程序终止执行,这比创建好数组之后才发现元素个数少了要好。向数组中插入nil通常说明程序有错,而通过异常可以更快地发现这个错误。

字面量字典Dictionary

不使用字面量创建Dictionary类型:

NSDictionary *personData =
    [NSDictionarydictionaryWithObjectsAndKeys:
        @"Matt", @"firstName",
        @"Galloway", @"lastName",
        [NSNumber numberWithInt:28], @"age",
        nil];

使用字面量创建Dictionary类型:

NSDictionary *personData =
    @{@"firstName" : @"Matt",
      @"lastName" : @"Galloway",
      @"age" : @28};

可见字面量语法更简明,理解也比较顺畅,因为比较符合我们键——值的习惯。
字典也可以像数组那样用字面量语法访问。按照特定键访问其值的传统做法是:

 NSString *lastName = [personData objectForKey:@"lastName"];

与之等效的字面量语法则是:

 NSString *lastName = personData[@"lastName"];

可变数组与字典mutableArray & mutableDictionary

修改可变数组与字典内容的标准做法是:

[mutableArray replaceObjectAtIndex:1 withObject:@"dog"];
[mutableDictionary setObject:@"Galloway"forKey:@"lastName"];

若换用取下标操作来写,则是:

mutableArray[1] = @"dog";
mutableDictionary[@"lastName"] = @"Galloway";

使用字面量语法创建出来的字符串、数组、字典对象都是不可变的(immutable)。若想要可变版本的对象,则需复制一份:

 NSMutableArray *mutable = [@[@1, @2, @3, @4, @5]mutableCopy];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值