ios 高效开发-----字面量

Objective-C(一下简称OC) 的语法比较繁杂,但是从OC 1.0 版本起,有一种非常简便的方式能创建NSString 对象,那就是字面量,也就是本篇文章的核心内容。其语法如下:

字面字符串

NSString * string = @"i‘m a string";

如果不用这种方法的话,就要用常见得alloc及init 方法

字面数值

OC提供的用于处理数值(整数、浮点数、bool值)的类是NSNumber,该类提供的主要类方法如下

如果不是用字面量,创建方式如下:

NSNumber * number = [NSNumber numberWithInt:2];

字面量方式创建:

NSNumber * intNumber    = @1;
NSNumber * floatNumber  = @1.2f;
NSNumber * doubleNunber = @3.14159;
NSNumber * boolNumber   = @YES;
NSNumber * charNumber   = @‘a‘;

字面量数组

数组是常用的数据结构,使用方式如下:

//使用系统方法创建
NSArray * array = [NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
//取值
NSString * str = [array objectAtIndex:0];

//使用字面量创建
NSArray * anotherArray = @[@"a",@"b",@"c",@"d"];
//取值
NSString * anotherStr = anotherArray[0];

使用字面量创建数组更安全,例如对上述数组稍作修改,如下:

//使用系统方法创建
NSArray * array = [NSArray arrayWithObjects:@"a",@"b",nil,@"d", nil];
//不报错:可以插入nil,nil作为结束标志,此时@"d"不能插入到数组中;
//取值
NSString * str = [array objectAtIndex:0];
//使用字面量创建
NSArray * anotherArray = @[@"a",@"b",nil,@"d"];
//报错因为字面量数组中不能插入nil;
//取值
NSString * anotherStr = anotherArray[0];

  

使用字面量语法更安全,抛出异常使应用程序终止执行,比创建好数组以后发现元素少了要好。

字面量字典

OC中也经常用到字典,OC创建字典的方式非常令人不解,写法也很难懂,OC的创建方式如下:

//系统常用的创建方式,这种方式 值在前,键在后,可读性不强
NSDictionary * dic        = [NSDictionary dictionaryWithObjectsAndKeys:@"dog",@"animal",@"boy",@"kid",@"bread",@"food", nil];
//取dog
NSString     * dog        = [dic objectForKey:@"animal"];

//使用字面量语法创建,键在前,值在后,简洁易懂
NSDictionary * anotherDic = @{@"animal":@"dog",@"kid":@"boy",@"food":@"bread"};
//取值
NSString     * anotherDog = anotherDic[@"animal"];

使用字面量的优点:

1、用字面量创建的对象,与传统的创建方式相比,更加简明。

2、可以通过去小标操作访问数组或字典中得键所对应的元素。

3、用字面量创建数组,若元素为nil,会提示错误。

缺点:

字面量除了字符串以外,所创建出来的对象必须属于Foundation框架才行,如果是自定义的这些类的子类,则无法使用字面量语法创建其对象。

  

时间: 2024-10-08 09:30:13

ios 高效开发-----字面量的相关文章

iOS 高效开发-----实现description 方法 (续)

在 “iOS 高效开发-----实现description 方法”这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescription方法 ,那将是一件非常庞大的工作量 ,因为自定义的类很多 ,而且每个自定义的类中的属性都会随着需求的修改出现变化 ,那么就又得修改这两个方法,那就变得无穷无尽了,永无宁日了,要么不用,要么就要找到更好得方法去用. 接下来,我们会用到动态运行时runtime. 我们先假设我们要处理的类中的属性都是OC的对象,

iOS 高效开发-----延时执行用GCD

早期我们使用延时执行的方法都是用NSObject 类提供的,performSelector:系列的方法,具体有哪些我们看一下 我们一般让某个对象延时执行某个方法都会调用包含  afterDelay这个参数的方法,此参数即代表延时多长时间执行 ,但是这一系列的方法的参数都只接受继承自NSObject类得对象,也就是说如果我们要向其中传入基本的数据类型,那就必须涉及到数据类型转换,这显然会增加开销,而且这一系列的方法最多也就能传如一个参数,如果我们要传多个参数怎么办呢 ,如果想继续使用这个方法,那我

iOS 高效开发-----实现description 方法

无论开发什么程序,也不管编写程序的程序猿的水平多高 ,肯定都会用到调试,肯定会经常打印查看对象的信息: 常用的方式就是使用NSLog,例如: NSLog(@"obj = %@",obj) 运行后,obj对象会收到description消息,该方法所返回的描述信息将取代“格式化字符串”里的“%@”,如果obj是一个数组的话,请看下面的例子: //数组 NSArray* obj = @[@1,@2,@3]; NSLog(@"obj = %@",obj); //打印信息如

第六讲 Block块语法及Block与数组的排序,ios字面量的使用(源代码上传)

1 #import <Foundation/Foundation.h> 2 3 4 #import "Student.h" 5 6 int c =200; 7 int main(int argc, const char * argv[]) { 8 @autoreleasepool { 9 /* 10 ------------------------------------- 11 定义block变量的四种方法 12 -----------------------------

ios:多用字面量语法

使用字面量语法可以缩减源代码长度,是其更为易读. 注意事项:用字面量语法创建数组时要注意,若数组元素对象中有nil,则会抛出异常.用字面量数组创建数组,其效果等于是先创建了一个数组,然后把方括号内得所有对象都加到这个数组中. 例如: id obj1 = @"obj1"; id obj2 = nil; id obj3 = @"obj3"; NSArray *arrayA = NSArray *arrayA = [NSArray arrayWithObjects:obj

使用字面量语法让iOS代码更漂亮

字面量语法 第一.字面数值 复杂方法: NSNumber *someNumber=[NSNumber numberWithDouble:3.4]; NSLog(@"the value is %@",someNumber); 替代方法: NSNumber *[email protected]; NSNumber *[email protected]; NSLog(@"the value is %@",a); NSLog(@"the value is %@&q

字面量语法的使用--IOS

使用oc时,经常会用到NSString,NSNumber,NSArray,NSDictionary,下面是关于他们的字面量语法的使用. (1)字面数值 有时需要把整数,浮点数,布尔值封入oc对象中 一般写法: NSNumber *num = [NSNumber numberWithInt:1]; 使用字面量语法: NSNumber *num = @1; 其他类型使用字面量语法: NSNumber *[email protected]; NSNumber *[email protected]; N

web前端开发与iOS终端开发的异同[转]

* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: Arial, Helvetica, sans-serif;margin: 0;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !importan

字面量和构造函数

字面量和构造函数 JavaScript中的字面量模式更加简洁.有表现力,而且在定义对象时不容易出错.本章将会讨论字面量,包括对象.数组和正则表达式字面量,以及为什么字面量要比等价的内置构造函数(如Object().Array()等)要更好.本章还会介绍JSON格式,JSON是使用数组和对象字面量的形式定义的一种数据交换格式.本章还会讨论自定义构造函数,包括如何强制使用new以确保构造函数正确执行. 为了方便使用字面量而不是构造函数,本章还会补充一些知识,比如内置包装构造函数Number().St