IOS开发之OC语法简化

来源:互联网 发布:淘宝拍照布光影棚 编辑:程序博客网 时间:2024/06/07 15:13

NSNumber

简化前的写法:

NSNumber *value;value = [NSNumber numberWithInt:12345];value = [NSNumber numberWithFloat:123.45f];value = [NSNumber numberWithBool:YES];

简化后的写法:

NSNumber *value;value = @12345;value = @123.45f;value = @YES;

装箱表达式也可以采用类似的写法:

NSNumber *piOverSixteen = [NSNumber numberWithDouble: ( M_PI / 16 )];NSString *path = [NSString stringWithUTF8String: getenv("PATH")];

可以分别简写为:

NSNumber *piOverSixteen = @( M_PI / 16 );NSString *path = @( getenv("PATH") );

对于字符串表达式来说,需要注意的是表达式的值一定不能是NULL,否则会抛出异常。

NSArray

对于NSArray的初始化来说,有非常多的写法,这里就不再一一罗列,我们直接看新的写法

NSArray *array;array = @[];             //空数组array = @[ a ];          //一个对象的数组array = @[ a, b, c ];    //多个对象的数组

非常简单,再也不用记住初始化多个对象的数组时,后面还要跟一个倒霉的nil。

现在我们看一下当声明多对象的数组时,编译器是如何处理的:

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 = @{ k1 : o1 };     //包含一个键值对的字典dict = @{ k1 : o1, k2 : o2, k3 : o3 }; //包含多个键值对的字典

    最后我们总接一下容器类数据结构简化的限制:

1、采用上述写法构建的容器都是不可变的,如果需要生成可变容器,可以传递-mutableCopy消息。例如

NSMutableArray *mutablePlanets = [@[@"Mercury", @"Venus", @"Earth",@"Mars", @"Jupiter", @"Saturn",@"Uranus", @"Neptune"] mutableCopy];

2、不能对常量数组直接赋值,解决办法是在类方法(void)initialize进行赋值,如下:

@implementation MyClassstatic NSArray *thePlanets;+ (void)initialize {    if (self == [MyClass class]) {        thePlanets = @[        @"Mercury", @"Venus", @"Earth",        @"Mars", @"Jupiter", @"Saturn",        @"Uranus", @"Neptune"        ];    }}

3、没有常量字典


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学历和学位认证怎么办 假学历无法认证怎么办 学历认证没照片怎么办? 毕业证封皮丢了怎么办 留服认证不了怎么办 无公害认证书怎么办 假学历认证报告怎么办 留学要求寄原件怎么办 干部小三怀孕怎么办? 小三的孩子怎么办 把小三打住院了怎么办 小月子没人伺候怎么办 寝室室友有狐臭怎么办 室友在寝室养猫怎么办 和直接领导不合怎么办 房产共有人去世怎么办 发现邪教宣传内容怎么办 说课时两个课时怎么办 投稿文章被拒绝怎么办 中立性细胞偏低怎么办? 孩子爱告状老师怎么办 高中学不好数学怎么办 想做老师应该怎么办 教师职称换学校怎么办 大四差选修学分怎么办 尔雅通识课学分没修满怎么办 大学全英文授课怎么办 小孩脑部有囊肿怎么办 防震期间门应该怎么办 在家待着没意思怎么办 人户分离上学怎么办 小孩上学没人接送怎么办 宝宝上学没人接送怎么办 上海浦东新区酒类许可证怎么办 金税盘里报税处理打不开怎么办 惠民卡到期了怎么办 遇到不拴狗链的主人怎么办 平安福没钱续保怎么办 提前很久到机场怎么办 机场来早了怎么办 机场去早了怎么办