2013-01-07 52 views
1

我正在为iPhone开发一个应用程序,并遇到一些内存管理问题。在应用程序执行过程中,活动字节连续增加,不受限制。我试图在我的代码中追踪这个问题,但似乎无法找到任何会导致实时字节数增加的事情。我在执行过程中注意到的一件事情是CFString(Immutable)的分配增加最快,从不减少或保持不变。有谁知道为什么会发生这种情况?在执行过程中,应用程序正在执行的操作是从本地数组或字符串填充表视图,然后下载另一个字符串对象数组并填充不同的表视图。我正在使用ARC。CFString内存管理问题

enter image description here

+0

当你寻找泄漏时,你看到有什么东西吗?或者,活动字节只是在增加?如果是后者,请确保您没有任何循环逻辑(例如,从视图控制器A执行模态延续以查看控制器B,并从B执行另一个从B回到A(而不是解除B))。查看我追踪分配来源的第二点。 – Rob

+0

@kaiserphellos您的问题是否解决?你能让我知道什么解决了你的问题吗? –

回答

1

由于缺乏具体的东西去,我给你有点法律顾问:

  • 关于如何使用工具来发现泄漏的指导见Finding leaks with Instruments

  • 有关如何从您的分配,到更有意义的分配来源分析的具体建议,请参阅此Stack Overflow answer的第4点。简而言之,突出显示您在分配中不明原因的跳转之一,设置底部窗口以显示调用树,隐藏系统库,并查看您的哪些例程内存正在被使用。

  • 此外,请不要忽略static analyzer,如果您不使用ARC或者使用任何Core Foundation调用,这一点尤其重要。

  • 你在做什么与核心基础功能?如果是这样,您显然需要知道您必须将所有权明确转让给ARC(使用CFBridgingRelease__bridge_transfer)或手动拨打CFRelease。不过,我先前的观点的静态分析仪会指出这一点。