0x0内存泄漏[iphone]

3

我的应用程序中出现了一个泄漏问题,我真的无法理解,有人可以帮我吗?

Instruments堆栈跟踪:

       0 libSystem.B.dylib calloc
       1 WebCore CurrentThreadContext()
       2 WebCore WKSetCurrentGraphicsContext
       3 UIKit -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:letterSpacing:includeEmoji:]
       4 UIKit -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:]
       5 UIKit -[UILabel _drawTextInRect:baselineCalculationOnly:]
       6 UIKit -[UILabel drawTextInRect:]
       7 UIKit -[UILabel drawRect:]
       8 UIKit -[UIView(CALayerDelegate) drawLayer:inContext:]
       9 QuartzCore -[CALayer drawInContext:]
      10 QuartzCore -[CALayer _display]
      11 QuartzCore -[CALayer display]
      12 QuartzCore CALayerDisplayIfNeeded
      13 QuartzCore CA::Context::commit_transaction(CA::Transaction*)
      14 QuartzCore CA::Transaction::commit()
      15 QuartzCore CA::Transaction::release_thread(void*)
      16 libSystem.B.dylib _pthread_tsd_cleanup
      17 libSystem.B.dylib _pthread_exit
      18 Foundation +[NSThread exit]
      19 Foundation __NSThread__main__
      20 libSystem.B.dylib _pthread_body
      21 TestApp 0x0
4个回答

2

这是在模拟器上还是实际设备上?

如果是在模拟器上,请针对实际设备测试泄漏问题。模拟器已知具有设备没有的奇怪泄漏问题。

如果这是在实际设备上,我也不知道如何解释它:\


你有没有查看是否有类似的错误报告?如果没有,我建议你进行报告。这看起来不像是由你的应用程序引起的问题。 - Ben S

2

在泄漏出现之前,你都做了些什么?一些事情可能会导致内存泄漏,比如试图在非主线程中进行UI更改。


你是怎么说不是来自主线程的呢?我的大部分绘图都是从View(Will/Did)Appear方法中完成的。或者是从线程中填充的UITableViewController。 - Thizzer
如果你使用NSOperationQueue,所有的操作都在并行线程中。当我尝试在我的操作中显示警告时,出现了内存泄漏问题。 - Morion

0

在我看来,这似乎是 Webkit 内部的泄漏问题... 除了向 Apple 提交报告外,可能没有太多你可以做的。


0

我认为Morion是正确的。绝对不要在主线程以外的线程中处理UI。我曾经因为意外而发生了最有趣的事情。

你说:

我的大部分绘图都是从View(Will/Did)Appear方法中完成的。或者是一个由线程填充的UITableViewController。

所以,控制器被另一个线程填充,这意味着这个绘图也在这个“其他”线程中执行。尝试使用performSelectorOnMainThread:withObject:waitUntilDone:

在这里看看:参考文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接