【问题标题】:for- loop in background thread accesses each index more than once --- iPhone dev后台线程中的 for- 循环多次访问每个索引 --- iPhone 开发
【发布时间】:2009-08-21 15:57:59
【问题描述】:

我有一个方法 getImageData 我称之为 [self performSelectorInBackground:@selector(getImagesData) withObject:nil]; 在我看来DidLoad。 getImageData 有一个 for 循环,我意识到循环中的每个索引都被多次调用。 我还在循环中访问了一个静态 NSMutableArray。当我不保留数组时,它给了我非常糟糕的访问权限。如果我保留它,循环将无休止地运行

【问题讨论】:

  • 你能提供一些代码来解决你遇到的问题吗?

标签: objective-c iphone memory-management


【解决方案1】:

听起来像是一个并发问题(此外,您并没有真正通过理解它来解决这个问题——我建议阅读 Cocoa 内存管理指南 [与 iPhone 相同] 和其中提供的并发指南之一文档)。

具体来说,您可能会调用 -performSelectorInBackground: 两次吗?

如果索引不在您的代码中,则 for 循环不会神奇地重新访问索引:

  1. 更改循环不变量
  2. 以正确的方式破坏内存
  3. 您无意中多次执行循环 -

如果我保留它,循环将无休止地运行表示您正在执行 3。否则它会崩溃只是因为您没有正确管理内存;这是另一个问题的征兆。

【讨论】:

  • 如果你运行-performSelectorInBackground: 两次,正确的解决方案是什么?
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 2016-11-25
  • 2020-08-07
  • 2021-04-07
  • 2012-10-19
  • 2023-03-03
  • 2020-07-30
  • 2011-02-14
相关资源
最近更新 更多