快速枚举零对象
这里应该发生什么? 安全吗?
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
,所以你的循环永远不会执行。 (所以这是安全的。)