2

デバイスの向きを変更すると、使用しているアプリで異常終了 (クラッシュ) が発生します。私はそれをそれほど頻繁に再現することはできません (回転しているときに常に発生するとは限りません.0.01% 程度の確率であるとしましょう) が、これは深刻な問題です. クラッシュレポートの重要な部分を添付しています。

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を使用しています。

理由の正確な原因、またはオートローテーション中にクラッシュする可能性を知りたいです。

前もって感謝します...

4

2 に答える 2

0

Zombies を有効にして、Instruments (Zombies) を使用してアプリをデバッグすると、エラーを特定するのに非常に役立ちました。しかし、バグを修正するか、将来同じ間違いを避けることは本当に重要です.

私のコードでは、次のような実装がありました...

- (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が解放されることを願っていますが、強い参照を保持することで回避できます。

于 2013-05-19T15:11:22.193 に答える