快速枚举零对象

这里应该发生什么? 安全吗?

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 ,所以你的循环永远不会执行。 (所以这是安全的。)