【问题标题】:iOS App crashing due to excess number of threads running inside由于内部运行的线程数量过多,iOS App 崩溃
【发布时间】:2013-10-24 11:18:07
【问题描述】:

我正在使用多个 NSOperationQueue,其中 maxConcurrentOperationCount 设置为 NSOperationQueueDefaultMaxConcurrentOperationCount。

在我的应用程序中,我正在创建 200 个或更多队列。当在队列中创建大量线程时,我会收到 SIGABRT。

我的担忧是:

  1. 我需要一次确定应用内足够数量的 NSOperations
  2. 为多队列提出一些负载平衡建议。
  3. 如何在使用多个队列时确定 maxConcurrentOperationCount。

由于应用程序内的线程数量过多,我不确定如何避免崩溃。

【问题讨论】:

  • 请发布控制台上显示的确切崩溃日志...
  • 你怎么知道是线程数的问题?
  • 如果你有 200 个操作队列,你可能还是有设计问题。
  • @sergio - 我收到 NSInternalInconsistencyException : 无法加载文件 abc.xib。
  • @jbat100 - Apple 表示您可以创建任意数量的队列。我想知道大量创建它们有什么问题?

标签: ios multithreading nsoperation nsoperationqueue


【解决方案1】:

我可以建议您创建一个固定队列池以重复使用(如果您确实需要它们)并设置适当数量的最大并发操作数,然后使用工具分析您的应用程序以找到一个很好的折衷方案,但我强烈建议您不要使用太多线程来保持应用的响应速度和易于调试。

【讨论】:

  • 由于每个iOS设备都有不同的硬件配置,那么你会如何权衡呢。
  • 开始寻找在你想要支持的最糟糕的硬件中运行良好的东西,而在其他硬件中只能运行得更好。后来你认为值得你为每个不同的硬件进行不同的配置
【解决方案2】:

我收到 NSInternalInconsistencyException : 无法加载文件 abc.xib

所以,这是对崩溃原因的提示。

检查您尝试使用 abc.xib 文件的方式,以及该文件是否有效并与您的 Xcode 目标相关联。问题的原因就在那里。

【讨论】:

  • 您是否检查过 xib 文件是否已添加到目标中,而不仅仅是添加到主项目中?如果里面有那个xib文件,我可以检查的是进行构建并签入捆绑包
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多