6

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

有人有一些我可以看的示例代码吗?

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

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

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

4

3 回答 3

9

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

还有这篇博文

于 2012-06-07T15:58:26.970 回答
2

这里有更好的解释:

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

注意:Apple 的源代码在技术上是正确的,但解释得不好,而且几乎没有用,除非你喜欢玩“猜猜程序员那天在想什么/抽烟”。

Liekwise,Mike Ash 的帖子是正确的,并且在您知道如何做之后很有用,但作为一个起点很糟糕。

于 2014-02-10T14:37:19.357 回答
0

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

您还可以使用 filteredArrayUsingPredicate: 派生一个新数组,该数组是原始数组的子集——我知道您说过您不想创建任何新数组,但如果您想返回数组的子集,那么您必须创建一个新数组。

于 2012-06-07T15:58:14.777 回答