为我的班级采用/实现快速枚举的示例?

时间:2012-06-07 15:52:25

标签: objective-c fast-enumeration

我正在尝试了解如何为我正在创建的类采用快速枚举协议(在iOS /目标C下)。我阅读了Apple的文档部分,但是......我不太明白!

任何人都有一些我可以查看的示例代码?

我正在尝试做什么:我有一个对象数组,我想让发送者迭代。发件人想要使用for-in构造。问题是我不希望发件人看到所有数组中的对象,因为其中一些在应用程序的上下文中无效。

换句话说,我希望我的迭代器返回符合特定条件的数组中的对象子集。

我不想在此过程中创建任何 new 数组,以免减慢速度。

3 个答案:

答案 0 :(得分:8)

Apple自己的FastEnumerationSample很好地证明了这一点。从它的声音,你可能还没有看到它。

还有this blog post

答案 1 :(得分:2)

这里有更好的解释:

http://www.cocoawithlove.com/2008/05/implementing-countbyenumeratingwithstat.html

注意:Apple的源代码在技术上是正确的,但解释得很差,除非你喜欢“猜猜程序员当时在想什么/吸烟”,否则大多数都没用。

Liekwise,Mike Ash的帖子是正确的,在你知道如何做之后很有用 ,但作为一个起点可怕。

答案 2 :(得分:0)

我不知道你的意思是“发件人想要使用for-in构造”。通过使用indicesOfObjectsPassingTest:可能会更好地实现您要求的结果,它将为您提供数组中所有项目的索引集,这些项目通过您为其设置的任何测试。

你也可以使用filteredArrayUsingPredicate:派生一个新的数组,它是你原来的一个子集 - 我知道你说你不想创建任何新数组,但如果你想返回数组的子集,那么你必须创建一个新阵列。