加载由发送到解除分配的实例的消息引起的UITableView崩溃

时间:2012-05-12 02:56:05

标签: ios iphone objective-c uitableview memory

我的测试应用加载由[1421:12503] *** -[__NSArrayM class]: message sent to deallocated instance 0x10ae83e0导致的UITableView和崩溃。崩溃时,进程在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 

请您为这种情况提供任何线索吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

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