2013-05-10 1 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 

Ни одна из ничьи не задействована, а ViewControllers не настроены. Более того, я использую ARC.

Я хотел бы знать точные причины разума или возможности, которые могут привести к сбою во время авторотации.

Заранее спасибо ...

+1

Вы используете ARC ?? 'libobjc.A.dylib 0x3233a5b0 objc_msgSend + 16' строка означает, что вы отправляете сообщение выпущенному объекту. отслеживать назад и проверять код ур. Некоторые объекты в делегатах tableview, которые вы используете, освобождаются. – croyneaus4u

+0

hmm ... Я использую ARC. Спасибо за ваше время и усилия ... позвольте мне попытаться снова сообщить, если мне удастся ... – Goppinath

ответ

1

Я думаю, что приложение отправляет сообщение на освобожденный объект. Да, иногда это происходит, даже если вы используете ARC. Чтобы отладить его, вам нужно запустить приложение с помощью инструментов (Zombies) и попытаться воспроизвести ошибку.

+0

Спасибо большое ... это помогло ... – Goppinath

0

Включение Zombies и отладка приложения с помощью инструментов (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, но этого можно избежать, удерживая сильную ссылку.