A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下列简化写法是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 *path3 = [NSString stringWithUTF8String: getenv("PATH")];

//可以分别简写为:

NSNumber *piOverSixteen2 = @( M_PI / 16 );

NSString *path4= @( 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];

2 个回复

倒序浏览
有些东西我还没涉及,  以后有用
回复 使用道具 举报
奋斗的青春无悔!!全力冲刺9月7号iOS就业班!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马