2013-05-10 95 views
2

当我正在更改设备方向时,我正在与正在使用的应用程序发生异常终止(崩溃)。我无法经常复制它(当我旋转时不会总是发生这种情况,假设机会在0.01%左右),但这是一个严重的问题。我附上了崩溃报告的重要部分。iOS中的自转运行崩溃

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x6563616e 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x3233a5b0 objc_msgSend + 16 
1 UIKit       0x36297b82 -[UISectionRowData  refreshWithSection:tableView:tableViewRowData:] + 1546 
2 UIKit       0x3628301e -[UITableViewRowData  rectForFooterInSection:] + 310 
3 UIKit       0x3628358c -[UITableViewRowData heightForTable] + 48 
4 UIKit       0x36283400 -[UITableView(_UITableViewPrivate)   _updateContentSize] + 324 
5 UIKit       0x362cc8b4 -[UITableView _rectChangedWithNewSize:oldSize:] + 252 
6 UIKit       0x362cc544 -[UITableView setFrame:] + 220 
7 UIKit       0x362c59c4 -[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] + 644 
8 UIKit       0x362c572e -[UIView(Geometry) _resizeWithOldSuperviewSize:] + 262 
9 UIKit       0x3644eb2a -[UIScrollView _resizeWithOldSuperviewSize:] + 38 
10 CoreFoundation     0x35b63aec __NSArrayChunkIterate + 360 
11 CoreFoundation     0x35b5ca74 __NSArrayEnumerate + 608 
12 CoreFoundation     0x35abeb66 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 58 
13 UIKit       0x3627e09e -[UIView(Geometry) resizeSubviewsWithOldSize:] + 114 
14 UIKit       0x36263ba2 -[UIView(Geometry) setFrame:] + 414 
15 UIKit       0x362c59c4 -[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] + 644 
16 UIKit       0x362c572e -[UIView(Geometry) _resizeWithOldSuperviewSize:] + 262 
17 CoreFoundation     0x35b63aec __NSArrayChunkIterate + 360 
18 CoreFoundation     0x35b5ca74 __NSArrayEnumerate + 608 
19 CoreFoundation     0x35abeb66 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 58 
20 UIKit       0x3627e09e -[UIView(Geometry) resizeSubviewsWithOldSize:] + 114 
21 UIKit       0x36263ba2 -[UIView(Geometry) setFrame:] + 414 
22 UIKit       0x362a6dc0 -[UIViewControllerWrapperView setFrame:] +  48 
23 UIKit       0x362c59c4 -[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] + 644 
24 UIKit       0x362c572e -[UIView(Geometry) _resizeWithOldSuperviewSize:] + 262 
25 CoreFoundation     0x35b63aec __NSArrayChunkIterate + 360 
26 CoreFoundation     0x35b5ca74 __NSArrayEnumerate + 608 
27 CoreFoundation     0x35abeb66 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 58 
28 UIKit       0x3627e09e -[UIView(Geometry) resizeSubviewsWithOldSize:] + 114 
29 UIKit       0x36263ba2 -[UIView(Geometry) setFrame:] + 414 
30 UIKit       0x362c59c4 -[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] + 644 
31 UIKit       0x362c572e -[UIView(Geometry) _resizeWithOldSuperviewSize:] + 262 
32 CoreFoundation     0x35b63aec __NSArrayChunkIterate + 360 
33 CoreFoundation     0x35b5ca74 __NSArrayEnumerate + 608 
34 CoreFoundation     0x35abeb66 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 58 
35 UIKit       0x3627e09e -[UIView(Geometry) resizeSubviewsWithOldSize:] + 114 
36 UIKit       0x362c64ae -[UIView(Geometry) setBounds:] + 430 
37 UIKit       0x3634ff32 -[UILayoutContainerView setBounds:] + 58 
38 UIKit       0x363edd88 -[UIViewController window:willAnimateRotationToInterfaceOrientation:duration:] + 460 
39 UIKit       0x3630e2b0 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:] + 3616 
40 UIKit       0x3630d482 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 42 
41 UIKit       0x3630d40c -[UIWindow _setRotatableViewOrientation:duration:force:] + 64 
42 UIKit       0x3644317c __57-[UIWindow _updateToInterfaceOrientation:duration:force:]_block_invoke_0 + 100 
43 UIKit       0x362cb676 -[UIWindow _updateToInterfaceOrientation:duration:force:] + 214 
44 UIKit       0x362d4d20 -[UIWindow _updateInterfaceOrientationFromDeviceOrientation:] + 176 
45 CoreFoundation     0x35ab9034 _CFXNotificationPost + 1424 
46 Foundation      0x3721bd8c -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 
47 UIKit       0x36268c60 -[UIDevice setOrientation:animated:] + 292 
48 UIKit       0x362633d6 -[UIApplication handleEvent:withNewEvent:] + 2954 
49 UIKit       0x362626c8 -[UIApplication sendEvent:] + 68 
50 UIKit       0x36262116 _UIApplicationHandleEvent + 6150 
51 GraphicsServices    0x318885a0 _PurpleEventCallback + 588 
52 GraphicsServices    0x318881ce PurpleEventCallback + 30 
53 CoreFoundation     0x35b3d170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32 
54 CoreFoundation     0x35b3d112 __CFRunLoopDoSource1 + 134 
55 CoreFoundation     0x35b3bf94 __CFRunLoopRun + 1380 
56 CoreFoundation     0x35aaeeb8 CFRunLoopRunSpecific + 352 
57 CoreFoundation     0x35aaed44 CFRunLoopRunInMode + 100 
58 GraphicsServices    0x318872e6 GSEventRunModal + 70 
59 UIKit       0x362b62f4 UIApplicationMain + 1116 

既不涉及线程活动也不定制ViewController。而且,我正在使用ARC。

我想知道导致自动旋转发生时崩溃的原因或可能性的确切原因。

在此先感谢...

+1

你使用ARC吗? 'libobjc.A.dylib 0x3233a5b0 objc_msgSend + 16'这里意味着你要发送消息给一个发布的对象。追溯并检查你的代码。在你使用的tableview委托中,一些对象正在被释放。 – croyneaus4u 2013-05-10 13:24:05

+0

嗯......我正在使用ARC。感谢您的时间和精力......让我再试一次,告诉我是否成功... – Goppinath 2013-05-10 13:37:40

回答

1

我认为应用程序发送消息到释放对象。是的,有时甚至在使用ARC时也会发生。要调试它,你需要运行仪器(僵尸)你的应用程序,并尝试重现该错误。

+0

非常感谢......它帮助了... – Goppinath 2013-05-13 08:31:01

0

使用乐器(僵尸)启用僵尸和调试应用程序确实有助于查找错误。但要修复这个错误或避免将来发生同样的错误非常重要。

在我的代码,我有一个实现这样的事情...

- (void)someMethod { 

    [self.navigationController pushViewController:[DestinationViewController new] animated:YES]; 

} 

那里,我们不直接持有DestinationViewController的强引用。但改变...

@property (strong, nonatomic) DestinationViewController *dvc; 

// .... 

- (void)someMethod { 

    self.dvc = [DestinationViewController new];   

    [self.navigationController pushViewController:self.dvc animated:YES]; 

} 

已帮助避免该错误。我无法真正解释为什么......?但我希望改变设备的方向会影响DestinationViewController,但通过保持强引用可以避免这种情况。