字面量

        在读《编写高质量iOS与OS X代码的52个有效方法》这本书时,才发现了一个自己一直遗漏的问题,NSArray的初始化方法initWithObjects:(对应的类方法arrayWithObjects:)和NSDictionary的初始化方法initWithObjectsAndKeys:(对应的类方法dictionaryWithObjectsAndKeys:),创建出来的的对象可能不是你期望的。

比如数组方法(摘抄自上书)

id object1=@"1234";

id object2=nil;

id object3=@"4567";

NSArray *arrayA=[NSArray array WithObjects:object1,object2,object3,nil];

NSArray *arrayB=@[object1,object2,object3];

         按字面量语法创建数组 arrayB 时会抛出异常。arrayA 虽然能创建出来,但是其中却只含有 object1 一个对象。原因在于,“ arrayWithObjects:”方法会依次处理各个参数,直到发现 nil 为止,由于 object2 是 nil,所以该方法会提前结束。

        致使用上述方法写的数组或者字典可能所包含的不是你所期望的,而且还不会抛出错误,所以用这两种方法创建数组和字典时要慎重。

你可能感兴趣的:(字面量)