美文网首页
Objective-C字面量语法总结

Objective-C字面量语法总结

作者: 你duck不必呀 | 来源:发表于2021-03-24 11:10 被阅读0次

编写 Objective-C程序时,总会用到某几个类,它们属于 Foundation框架。虽然从技术 上来说,不用 Foundation框架也能写出 Objective-C代码,但实际上却经常要用到此框架。
这几个类是 Nsstring、 Nsnumber、 Nsarray、 Nsdictionary。从类名上即可看出各自所表示 的数据结构。

整数int、浮点数float、布尔值BOOL 封装成Objective-C对象。这种情况下可以用Nsnumber类,该类可处理多种类型的数值。

 NSNumber *intNum = [NSNumber numberWithInt:10];

使用字面量语法:

NSNumber *intNum = @(10);
NSNumber *folatNum = @2.5f;
NSNumber *doubleNum = @3.14;
NSNumber *boolNum = @YES;
NSNumber *charNum = @'a';

字面量表达式:

NSNumber *expNum = @(5 * 3.14);

字面量数组

数组是常用的数据结构。如果不使用字面量语法,那么就要这样来创建数组:

NSObject *obj2;
NSArray *array = [NSArray arrayWithObjects:@"item1",obj2,@"item3",nil];

这样做会有一个问题,假如obj2为nil,arrayWithObjects方法会依次处理每个对象,遇到nil会提前结束
字面量数组:

NSArray *array = @[@"item1",obj2,@"item3"];

而使用字面量,会在运行时抛出异常,这个微妙的差别表明,使用字面量语法更为安全,抛出异常令应用程序终止执行,这比 创建好数组之后オ发现元素个数少了要好。向数组中插入nil通常说明程序有错,而通过异 常可以更快地发现这个错误

字面量字典

NSObject *value1 = [NSObject new];
NSObject *value2 = [NSObject new];
NSObject *value3 = [NSObject new];
NSObject *value4 = [NSObject new];

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                                                                 value1,@"key1",
                                                                 value2,@"key2",
                                                                 value3,@"key3",
                                                                 value4,@"key4", nil];

默认创建字典会感到奇怪,就是<value>,<key>,<value>,<key>,<value>,<key>,...这样反过来的形式,以及中间用,隔开

使用字面量字典:

NSDictionary *dic = @{
         @"key1":value1,
         @"key2":value2,
         @"key3":value3,
         @"key4":value4,
     };

写法更简明,而且键出现在对象之前,理解起来较顺畅,字典中的对象和键必须都是 Objective-C对象

假如:

NSDictionary *dic = @{
         @"key1":value1,
         @"key2":value2,
         @"key3":3.14,
         @"key4":value4,
     };

这种形式会编译报错,可以通过@3.14将其封装在 Nsnumber实例中,

与数组一样,用字面量语法创建字典时也有个问题,那就是一旦有值为nil,便会抛出异常。不过基于同样的原因,这也是个好事。假如在创建字典时不小心用了空值对象,那么dictionaryWithobjectsAndkeys:方法就会在首个nil之前停下,而使用字面量会在运行期间抛出异常,这有助于排错。

注意点:

  • 使用字面量语法创建出来的字符串、数组、字典对象都是不可变的。若想 要可变版本的对象,则需复制一份:
NSMutableArray *mutArray = [@[@"item1",@"item2",@"item3"] mutArray];
  • 用字面量语法创建数组或字典时,若值中有nil,则会抛出异常。因此,必须确保值里不含nil

相关文章

网友评论

      本文标题:Objective-C字面量语法总结

      本文链接:https://www.haomeiwen.com/subject/lamchltx.html