快速枚举零对象
这里应该发生什么? 安全吗?
NSArray *nullArray=nil; for (id obj in nullArray) { // blah }
更具体地说,我必须这样做:
NSArray *array=[thing methodThatMightReturnNil]; if (array) { for (id obj in array) { // blah } }
还是这样好吗?
for (id obj in [thing methodThatMightReturnNil]) { // blah }
什么都不会发生 for-in循环使用NSFastEnumeration协议迭代集合中的元素,所以实质上是发送一个消息给nil ,这在Objective-C中是安全的。
快速枚举通过方法- countByEnumeratingWithState:objects:count: ,它返回0来表示循环的结束。 由于任何方法都返回0 ,所以你的循环永远不会执行。 (所以这是安全的。)