Kevin's Code
Talk is cheap, show me the code!

Modern Syntax Style of Objective-C Working on Foundation

Mar 22, 2014
很多情况下,没有必要使用alloc init或者类方法去初始化一个Foundation对象。下面列举了一些在使用Foundation framework时,可以简化代码,并且看上去很屌的方法。当然,很简单。
数组,NSArray和NSMutableArray:
NSMutableArray *array = @[]; // 创建一个可变的数组
NSMutableArray *mutableArray = [@[] mutableCopy]; // 从一个不可变数组创建一个可变数组
NSArray *immutbaleArray = [mutbaleArray copy]; // 从一个可变数组创建一个不可变数组
字典,NSDictionary和NSMutableDictionary:
NSDictionary *dict = @{key1 : value1, key2 : value2, key3 : value3}; // 类似JSON格式
id Obj = dict[key]; // 起到和objectForKey:一样的作用,同对数组使用索引一样去检索字典中的值
// copy和mutableCopy方法同样适用于字典,依然是copy产生一个不可变字典,mutableCopy产生一个可变的
数字,NSNumber:
NSNumber *intNum = @12; // 创建一个包含整型值的NSNumber
NSNumber *enumNum = @(UIViewAnimationCurveLinear); // 创建包含枚举值的NSNumber
NSNumber *booleanNum = @NO; // 创建包含布尔值的NSNumber
NSNumber *booleanNum = @([str isEqualToString:anotherStr]); // 依据表达式来创建NSNumber
BTW,为什么需要把primitive data type打包成对象,因为在面向对象编程中,很多时候我们需要的时对象,而不是primitive data type。比如你不可能把int或者BOOL存入NSSet或者NSDictionary。动态绑定同样需要的是对象。