不一样的NSNumber、NSArray和NSDictionary
最新的OC语法里还添加了许多类似脚本语言的特性,例如以前要生成NSNumber满费劲,都是[NSNumber numberWith***]的写法,太多冗余。现在方便了,可以用@符号替代,例如[NSNumber numberWithChar:‘c’]
可以直接表示为@'c'
,[NSNumber numberWithInt:123]
直接表示为@123
,[NSNumber numberWithFloat:1.23f]
z直接写为@1.23f
,其他类型同理变换。
NSArray的变化也是类似的,[NSArray array]
就是@[]
,[NSArray arrayWithObject:x]
就是 @[x]
,[NSArray arrayWithObjects:x, y, z, nil]
就是@[x, y, z]
,不过这种方式生成的是NSArray,要生成NSMutableArray呢?也简单,直接调用mutableCopy即可,例如[@[x, y, z] mutableCopy]
。如果要访问第1个元素,以前需要写成[array objectAtIndex:0]
,现在可以直接用array[0]
访问,像极了脚本语言。
NSDictionary的变化和NSArray类似,不同的是用@{}
,例如[NSDictionary dictionaryWithObject:value forKey:key]
可以表示为@{key: value}
。访问时也和大多数脚本语言一样,用dict[key]
来获得键值对应的值。
至于以上简化的方法到底要不要用,还是看自己或者项目组的习惯了,个人建议是在符合统一编码规范的情况下,尽量拥抱变化,毕竟这些都是为了优化生产效率的变化。