问题标签 [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 投票
1 回答
37 浏览

nsmutablearray - 如何对 NSMutableDictionary 的 NSMutableArray 中的值进行小计

我知道这更像是一个方法,但由于某种原因,我过于复杂应该是一个简单的快速枚举。我只是想为每个“数字”小计“移位长度”。我创建了一个 NSObject,用于将 mm:ss 转换为秒以轻松转换,我对此并不担心。我希望结果是 NSMutableDictionary 的另一个 NSArray:

提前致谢...

-保罗

样本数据

编辑

我能够用以下方法解决这个问题:

0 投票
1 回答
103 浏览

objective-c - Fastenumeration implementation

I am trying to implement the countByEnumeratingWithState method in my objective-c class (say MyClass In this method I do an

The reason why I have to allocate objects on the fly is because those objects are stored 'elsewhere'. However, when using this method from an application, it will crash:

The reason for this is most likely that ARC throws away my MyOtherClass object in countByEnumeratingWithState because the buffer is 'unretained'. How can I make sure the MyOtherClass object 'retains' ?

More relevant information:

  • thread #4: tid = 0x5ca941, 0x0000000101a4cf8b libobjc.A.dylibobjc_msgSend + 11, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) frame #0: 0x0000000101a4cf8b libobjc.A.dylibobjc_msgSend + 11
0 投票
1 回答
738 浏览

ios - for in 循环如何在内部工作 - 目标 C - 基础

我找到了这个答案:

https://stackoverflow.com/a/5163334/1364174

其中介绍了如何for in实现循环。

问题是,我发现它错了。

首先,当您打开自动引用计数 (ARC) 时,会出现错误

Sending '__strong id *' to parameter of type '__unsafe_unretained_id*' changes retain/release properties of pointer

错误截图

但即使我关闭 ARC,我发现我的 __object 数组似乎表现得很奇怪:

错误2截图

这是实际代码(我假设 MAX_STACKBUFF_SIZE 为 40):

当我尝试获取 __object 数组的内容时,我得到了 EXC_BAD_ACESS。我还发现,当您尝试遍历 __enumState.itemsPtr 时,它确实有效。

你能解释一下这里发生了什么吗?为什么我的__objects似乎被“缩小”了。为什么它不包含所需的对象?以及为什么在打开 ARC 时会出现该错误。

非常感谢您的时间和精力!(我提供了屏幕截图以便更好地了解导致错误的原因)

0 投票
3 回答
355 浏览

objective-c - 如何在 Objective-C 中使用两个 NSArray 进行快速枚举以填充 NSDictionary?

我有两个数组,一个保存键值(myKeys),另一个保存 NSString 对象(myStrings)。我想使用两个数组来使用快速枚举填充单个 NSDictionary (myDictionary),但不知道如何?

我将如何在此处考虑 NSArray 对象?

0 投票
2 回答
185 浏览

ios - 尝试通过检查 iOS 中 NSDictionary 的键和对象来遍历数组

我有一个 UISwitches 的 NSArray。我分别有一个 NSDictionary,其键是 NSNumber,其对象是 NSString 对象形式的 BOOL 值。我想做的是遍历 UISwitches 的 NSArray,检查标签值是否是 NSDictionary 内部的键之一,如果找到匹配项,则将 UISwitch 的 enabled 属性设置为键的对应对象(在将其从 NSString 转换为 BOOL 之后)。

我的代码如下:

0 投票
3 回答
149 浏览

objective-c - 使用 for..in 逐行读取文件

我正在尝试使用 Objective-C 从外部 txt 文件(约 180kb)中逐行读取。我在 SO 上找到了这段代码。我理解它的方式,这段代码会将每一行放在一个元素中,对吗?

我尝试通过在输出中打印一行来检查它是否正常工作,但没有任何反应,我在这里做错了什么?

谢谢,

更新:我进行了建议的更改,结果 fh 确实为零。如果我将 fh 设为一个包含一段文本文件(包括几个 \n)的字符串,它可以正常工作。我检查了文件路径,但这似乎没问题,所以现在的问题是 fh = nil 是怎么来的?

0 投票
1 回答
53 浏览

ios - 快速枚举情况

我目前正在使用快速枚举变量,这看起来很简单,但我无法让它工作。

我有这个代码,它可以工作

这实际上打印了存储在标题中的每个键。现在,我尝试这样做

它只打印一个。为什么?

0 投票
1 回答
61 浏览

introspection - for in 循环是否会内省数组的内容

给定一个数组

日志消息的输出是 5 还是 5 6 7 8。即。for/in 循环是否内省字典/数组中的顶级对象或深入检查嵌套集、数组、字典等?

编辑

我意识到我为这个问题付出了很多热情,所以让我澄清一下我的意思。是的,你没问题,for-in 快速枚举不执行自省,但为什么不呢?如果我专门指定了一个类型,例如 NSNumber 或 NSString,为什么 for in 循环不使用您指定的类型执行 kindOfClass 方法,而不是将对象转换为不正确的类型?在上面的例子中,我只迭代数组中的 NSNumbers 是不是很直观?

我怀疑答案是对数组中的每个项目进行自省可能会否定快速枚举的性能增强?但是,当我们想要动态类型和显式类型时,当我们想要执行自省时,使用 id 不能解决这个问题吗?

0 投票
2 回答
218 浏览

ios - 使用嵌套快速枚举耗时太长,如何优化?

我这样做是在应用程序启动后立即执行的,幸运的是我只需要在一个名为 CMIDataManager 的单例类中执行一次,我的应用程序启动时间太长。

该 plist 包含:

指挥官.plist:

德语 - 数组

苏联 - 阵列

每个指挥官阵列有 19 个指挥官,每个指挥官有 5 种能力(通过独特的能力 uid 映射)。

能力.plist:

GermanAbilities - 数组

苏联能力 - 阵列

每个数组包含 40 个具有 uid 的能力(用于将指挥官映射到能力)

一开始,我需要创建一个模型类,因此我针对每个隐藏的能力迭代指挥官的能力 uid,一旦找到匹配项,我将能力模型对象添加到 Commaders 模型对象。

我怎样才能更快地做到这一点?使用基于块的枚举会加快速度吗?我该如何使用它?

添加图像:

指挥官 Plist 样本 能力清单样本

0 投票
3 回答
1791 浏览

objective-c - 遍历块 vs 快速枚举 vs for 循环

我认为遍历 Blocks 比枚举更快,在某些情况下确实如此。然而,在这个简单的例子中,我有一个数据数组,我正在使用不同的迭代方法创建多个数组,结果不是我所期望的。

一个解释会对他有所帮助。

//创建数据数组所用时间 0.383750

//使用普通for循环0.309719迭代所花费的时间

//使用快速枚举迭代所花费的时间 0.278467

//使用块进行迭代所花费的时间 0.526629