20

在我的应用程序中,我收到了多个内存泄漏。该对象是 48 字节的 Malloc,它始终源自负责的调用者 strdup。对象的历史只显示它被 Malloced,没有其他保留或释放。堆栈跟踪没有显示我的任何代码。我能挑出的唯一相关点是:

  10 UIKit _UIGestureRecognizerSendActions
   9 UIKit -[UIScrollView handlePan:]
   8 UIKit -[UIScrollView _endPanWithEvent:]
   7 UIKit -[UIScrollView(Static) _startTimer:]
   6 CoreFoundation CFNotificationCenterAddObserver
   5 CoreFoundation _CFXNotificationRegisterObserver
   4 libnotify.dylib notify_register_dispatch
   3 libnotify.dylib notify_register_mach_port
   2 libnotify.dylib token_table_add
   1 libsystem_c.dylib strdup
   0 libsystem_c.dylib malloc

它似乎在地图视图上滚动时发生,但我不确定如何继续,因为堆栈中没有引用我的代码。我应该如何继续诊断这种泄漏?

如果需要任何进一步的信息,请告诉我。

问候,尼克

4

4 回答 4

11

如果它是“仅”48 字节,所有证据都指向系统框架中的帧(即分配永远不会暴露给您的代码),并且没有成千上万的它们,那么我(a)不会担心关于它太多了,但我会(b)立即通过http://bugreport.apple.com/提交错误

附上您的应用程序的二进制文件和有关如何重现问题的说明。

于 2012-03-26T21:49:53.847 回答
1

我想我已经确认它是在 5.1 中引入的。当我的应用程序处于活动状态时,我可以通过按主页按钮在我的应用程序中复制内存泄漏,并将 UIScrollView 作为使用 iPhone 模拟器 5.1 的活动视图。在 iPhone 模拟器 5.0 上运行的相同测试不会重现该错误。

希望这可以帮助

于 2012-08-03T00:05:18.937 回答
0

只是为了确认这确实是一个反复出现的问题,而不仅仅是您有问题。我已经在表格滚动和 UIScrollView 中看到了这种情况。我已经在模拟器中对其进行了测试,并在 iPad 上分析了发布版本。似乎是 5.1 中的一个常见问题,但我还没有听说过修复。我也同意,每卷 48 字节可能会成为一个问题。

于 2012-08-31T15:21:46.080 回答
0

它可能是由 performselectorinbackground 引起的,在 @autoreleasepool{} 块内调用它

于 2012-12-06T18:51:43.897 回答