0

我的应用程序在 [UIView(CALayer Delegate) drawLayer:inContext: 中崩溃,最困难的是崩溃日志中没有我的应用程序的任何代码,我无法重现它。这个问题花了我几天时间,我仍然不知道。你们提供的任何想法,我都会尝试。谢谢您的帮助。

 crash log:
    0  libobjc.A.dylib     objc_msgSend_stret (in libobjc.A.dylib) + 18
    1  UIKit             -[UIView(CALayerDelegate) drawLayer:inContext:]
    2  QuartzCore         -[CALayer drawInContext:] (in QuartzCore) + 116
    3  QuartzCore          CABackingStoreUpdate_ (in QuartzCore) + 1782
    4  QuartzCore          CA::Layer::display_() (in QuartzCore) + 972
    5  QuartzCore        CA::Layer::display() (in QuartzCore) + 128
    6  QuartzCore      CA::Layer::display_if_needed(CA::Transaction*) (in QuartzCore)
    7  QuartzCore     CA::Context::commit_transaction(CA::Transaction*)
    8  QuartzCore      CA::Transaction::commit() (in QuartzCore) + 314
    9  QuartzCore      CA::Transaction::pop() (in QuartzCore) + 126
    10 QuartzCore     +[CATransaction commit] (in QuartzCore) + 34
    11 UIKit          _UIWindowUpdateVisibleContextOrder (in UIKit) + 188
    12 UIKit           +[UIWindow _prepareWindowsForAppResume] (in UIKit) + 10
    13 UIKit          -[UIApplication _handleApplicationResumeEvent:] (in UIKit) + 74
    14 UIKit              -[UIApplication handleEvent:withNewEvent:] (in UIKit) + 1080
    15 UIKit              -[UIApplication sendEvent:] (in UIKit) + 54
    16 UIKit               _UIApplicationHandleEvent (in UIKit) + 5808
4

1 回答 1

0

解决方案是尝试将问题细分。假设您有一个导致此问题的视图,那么最可能的解释是视图中的某些内容已损坏或已被释放。

1)你有没有尝试打开僵尸,看看是否有一些dealloc'd项目正在收到消息?

2)在崩溃开始时正在显示(或即将显示)的视图中,一次删除一个项目,或者将它们全部从视图中删除,然后开始一一添加。完成这种杂乱工作的一个好方法是复制你的项目文件夹,保存旧文件夹,然后剪掉代码块,这样你就可以开始工作了。

我的猜测是某些东西在它应该被释放之前就被释放了。

于 2012-08-21T11:50:20.973 回答