快速枚举与Objective-C中的NSEnumerator
我一遍又一遍地看到这一点,为什么在循环中使用快速枚举更快,而不是使用
nextObject:
的NSEnumerator
。
没有找到相关结果
已邀请:
3 个回复
渴翅吮斡撤
是枚举集合的旧方法。它涉及创建一个表示枚举的对象,然后为每次迭代调用一个方法。虽然这可以使用多年,但它并不是非常有效,因为它涉及至少一个消息发送循环的每次迭代。
是更现代的方法,它利用本地语言支持来提供更有效的枚举。它的工作方式是它创建一个表示当前枚举状态的结构,并在集合上重复调用
。此方法返回
out-param中的C对象数组以及
out-param中的计数器。这允许调用者迭代C数组。本质上,这意味着每个对象的一个消息调用,根据集合,可以像获取所有对象的单个消息调用一样高效。 如果您有一些看起来像的代码
这会被编译器翻译成大致相当于的东西
使用的实际变量是隐藏的,对象缓冲区的最大大小也是依赖于实现的,但基本的想法是存在的。它将obj-c集合上的迭代转换为C数组上的迭代。
仇聘发栖
摊揉售
array = {{1,2},{2,3},{3,4}} 这意味着array是一个数组数组。那么如何访问所有数组及其值。 我们可以像这样使用for循环
或者快速枚举就像这样
这是一个示例。 PS。我忘记了数组在控制台中的样子。