字面量

        在读《编写高质量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,所以该方法会提前结束。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容