2009-12-09 96 views
2

使用下面的枚举器使用fastEnumeration可能会丢失任何问题吗?我只问作为代码示例(在线&书)似乎总是使用whileLoop。代码sniped工作正常,只是好奇,如果我错过了一个潜在的问题。请不要这只是一个没有错误检查的测试。用enumeratorAtPath快速枚举?

NSDirectoryEnumerator *dirEnum; 
NSString *eachPath; 

dirEnum = [fileManager enumeratorAtPath:sourceDir]; 
for(eachPath in dirEnum) NSLog(@"FILE: %@", eachPath); 

加里

回答

2

这些示例使用while循环,因为快速枚举语法是该语言的最新增加语言。只要in关键字后面的对象符合NSFastEnumeration协议,您的代码就没问题。

实际上,由于NSEnumerator中的默认实现仅落入-nextObject,所以无论哪种方式,您都不会看到明显的速度差异。

+0

啊我明白了,谢谢。 – fuzzygoat 2009-12-09 19:21:27

0

虽然它往往没有提到你可以在任何NSEnumerator对象或子类(NSDirectoryEnumerator)对象上使用快速枚举。