【问题标题】:Load UITableView crash caused by message sent to deallocated instance由发送到已释放实例的消息导致的加载 UITableView 崩溃
【发布时间】:2012-05-20 14:25:42
【问题描述】:

我的测试应用加载了一个 UITableView 并由[1421:12503] *** -[__NSArrayM class]: message sent to deallocated instance 0x10ae83e0 导致崩溃。崩溃时进程在 main() 方法处停止。

而且这种崩溃只发生在 ios 4.3.2 的模拟器中,在 ios 4.3.2 和 ios 5.1 的设备中可以,在 ios 5.1 的模拟器中也可以。 我无法找出哪个实例被错误地释放。

我在终端中使用命令malloc_history 1421:12503 0x10ae83e0 试图找到任何有价值的线索。但我只得到以下信息:

    > ALLOC 0x10ae83e0-0x10ae83f7 [size=24]: thread_ac2502c0 |start | main | UIApplicationMain | GSEventRun | GSEventRunModal | CFRunLoopRunInMode | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSource1 | 

    __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ | mshMIGPerform | 

_XCopyElementAtPosition | _AXXMIGCopyElementAtPosition | _copyElementAtPositionCallback |
     -[UIView(UIViewAccessibility) _accessibilityHitTest:withEvent:] | 
    -[UIView(UIViewAccessibility) __accessibilityHitTest:withEvent:] |
     -[UIView(UIViewAccessibility) _accessibilityHitTest:withEvent:] |
     -[UIView(UIViewAccessibility) __accessibilityHitTest:withEvent:]|
     -[UIView(UIViewAccessibility) _accessibilityHitTest:withEvent:] |
     -[UIView(UIViewAccessibility) __accessibilityHitTest:withEvent:] |
     -[UIView(UIViewAccessibility) _accessibilityHitTest:withEvent:] |
     -[UIView(UIViewAccessibility) __accessibilityHitTest:withEvent:] | 
    -[UIView(UIViewAccessibility) _accessibilityHitTest:withEvent:] | 
    -[UIView(UIViewAccessibility) __accessibilityHitTest:withEvent:] |
     -[UITableViewAccessibility(Accessibility) _accessibilityHitTest:withEvent:] | 
    -[UITableViewSectionElement _accessibilityHitTest:withEvent:] | 
    -[UITableViewSectionElement accessibilityChildren] | 
    -[__NSPlaceholderArray init] | 
    -[__NSPlaceholderArray initWithCapacity:] | 
    +[__NSArrayM __new::] | __CFAllocateObject2 | class_createInstance | calloc | malloc_zone_calloc 

能否请您提供有关这种情况的任何线索?提前致谢!

【问题讨论】:

    标签: ios iphone objective-c uitableview memory


    【解决方案1】:

    我猜您用于数据源的NSArray 是自动释放的。检查并保留它。这可能会解决这个问题,但如果没有一些代码,我无法确定,尤其是关于如何创建这个数组。

    完成后不要忘记释放dealloc 中的数组。

    【讨论】:

    • 您好丹尼尔,感谢您的回复。你是对的,一个可变数组被释放不正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    相关资源
    最近更新 更多