Load UITableView crash caused by message sent to d

2020-04-21 07:03发布

问题:

My test app loads a UITableView and crash caused by [1421:12503] *** -[__NSArrayM class]: message sent to deallocated instance 0x10ae83e0. Process stopped at main() method when crashed.

And this crash only happen in simulator for ios 4.3.2, it is ok in device for ios 4.3.2 and ios 5.1, it is also ok in simuator for ios 5.1. I cannot find out which instance be freed incorrect.

I used command malloc_history 1421:12503 0x10ae83e0 in terminal to try to find any valuable clue. But I only get following informations:

    > 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 

Could you please kindly provide any clue for this situation? Thanks in advance!

回答1:

I'm guessing that the NSArray you are using for the data source is autoreleased. Check it out and retain it. That will probably fix this, but I can't really be sure without some code, especially on how you are creating this array.

Don't forget to release the array in dealloc when you're done.