问题标签 [fast-enumeration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6978 浏览

objective-c - 如何实现 NSFastEnumeration 协议?

我有一个班级,我希望我的班级确认 NSFastEnumeration 协议。我已经阅读了文档,但不是很清楚。有人可以告诉我协议方法应该返回什么以及它是如何工作的吗?

0 投票
1 回答
3134 浏览

objective-c - Objective-C 快速枚举冒泡排序

我正在尝试将一些 GCD 集成到我的代码中,并且发现严重的瓶颈是我在大型数组中的对象之间执行的气泡比较。这是原始代码:

得到我的漂移?因此,许多其他快速枚举任务可以通过转换轻松地 GCD'd

至:

有没有办法将我的前瞻排序气泡排序算法转换为我可以提供给 GCD 块实现的东西?

0 投票
3 回答
4532 浏览

objective-c - Objective-C 中的快速枚举与 NSEnumerator

我一遍又一遍地看到这一点,为什么在循环中使用快速枚举而不是NSEnumeratorusing更快nextObject:

0 投票
3 回答
433 浏览

iphone - 为什么这个简单的“if”语句不起作用(在快速枚举中)?

我正在枚举ChecklistItem表中的实体,以查看哪些实体的priority(NSNumber 属性)为 1。checklistItemsChecklist.

在这个简单的代码中,第一个 NSLog 工作正常,并报告我的几个 ChecklistItems 的优先级为 1。但第二个 NSLog 永远不会被调用。为什么是这样?我认为我错误地构建了“if”语句,但我不知道如何。

0 投票
3 回答
3248 浏览

objective-c - 在没有副作用的情况下删除 for 循环中的项目?

for我可以在没有副作用的情况下删除我在 Objective-C 循环中循环的项目吗?

例如,这样可以吗?

0 投票
3 回答
1095 浏览

objective-c - Enumeration and removing a particular object from NSMutableArray

I'm having trouble removing items from my NSMutableArray. I'm extremely new to Objective-C, so please bear with me.

So far, I have the following: I'm trying to remove a line from the array if it has certain text inside. I cannot do this while fast-enumerating, so I'm trying to store the index, for removal after the enumeration has finished. However, I'm being told that this makes a pointer from an integer without a cast. Confused!

0 投票
4 回答
883 浏览

objective-c - 将指针添加到可变数组后,我可以重复使用它吗?

假设我有一个带有字符串的数组。

我想要的是启动一些自定义类的对象并将它们添加到可变数组中。我正在使用一个带有字符串参数的自定义初始化方法。

更具体地说,我想[SomeClass alloc] initWithName: aName]将结果对象添加到NSMutableArray.

我正在考虑使用 Objective-C 快速枚举。所以我得到的是:

问题是我无法添加nil到数组中,而且我不喜欢异常处理。但是,我的启动方法可能会返回nil。所以我决定在添加(预防)之前先检查一下。我的新 for-in-loop 是:

现在,我不是立即将新对象传递给数组,而是先设置一个指针someObject,然后将指针传递给数组。

这个例子向我提出了一个问题。当我someObject = [[[SomeClass alloc] initWithName: name] autorelease]在循环中时,数组中的现有对象(使用相同的指针添加)是否也会改变?

换句话说:该addObject: (id)someObject方法是为我传递的指针创建一个新的内部副本,还是我必须创建一个指针的副本——我不知道如何——然后自己传递这个副本?

非常感谢!:-)

0 投票
1 回答
205 浏览

objective-c - 如何检测对象是否在 Objective-C 中实现 NSFastEnumeration 协议?

我想对类型的对象使用快速枚举id

基本上我在这里错过了支票:

0 投票
1 回答
6646 浏览

ios - Core Data/NSOperation:枚举和删除对象时崩溃

我有一个基于核心数据的应用程序,它具有一个对象(列表)到多个对象(列表项)的关系。我正在处理设备之间的数据同步,作为其中的一部分,我从后台线程中的 XML 文件导入列表(通过 NSOperation 子类)。

当我更新现有列表时,我删除其所有旧列表项(从特定于该线程的 NSManagedObjectContext 中)并用 XML 文件中的新列表项替换它们...删除是通过枚举项目来处理的列表:

但是,偶尔,我在该枚举期间遇到崩溃:

* 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“* Collection <_NSFaultingMutableSet: 0x4fcfcb0> 在枚举时发生了变异。

我不确定从哪里开始寻找导致该问题的原因。在枚举发生时,我不会在代码的任何其他部分修改列表。可以同时有多个线程,因为不同的列表被导入/更新......将上下文保存在另一个线程中会导致问题 - 因为它还会通知主上下文(如果它与枚举同时发生) ?

如果有帮助,这里是我的 NSOperation 子类的“main”函数的代码(我从 Core Data 中删除旧的列表项,并通过解析 XML 数据来更新列表):

感谢您的任何建议。

0 投票
1 回答
212 浏览

iphone - 快速枚举排序

保证按放入数组中的顺序返回对象?