使用enumeratorAtPath进行快速枚举?

时间:2009-12-09 11:13:12

标签: objective-c

使用下面的枚举器使用fastEnumeration时,我可能会遇到任何问题吗?我只问,因为代码示例(在线和书籍)似乎总是使用whileLoop。代码狙击工作正常,只是好奇我是否错过了潜在的问题。请注意,这不是一个没有错误检查的测试。

NSDirectoryEnumerator *dirEnum;
NSString *eachPath;

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

加里

2 个答案:

答案 0 :(得分:2)

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

实际上,由于NSEnumerator中的默认实施只落实到-nextObject,因此您无论如何都不会看到明显的速度差异。

答案 1 :(得分:0)

虽然通常没有提及,但您可以在任何NSEnumerator对象或子类(NSDirectoryEnumerator)对象上使用快速枚举。