iPhone: сбой приложения с утечкой во фреймворке? или это моя вина?

Я получил следующие журналы сбоев после сбоя моего приложения:

0   libobjc.A.dylib                 0x000034f4 objc_msgSend + 20
1   UIKit                           0x000a9248 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 644
2   UIKit                           0x000a8eac -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 44
3   UIKit                           0x0006f480 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1300
4   UIKit                           0x0006ce40 -[UITableView layoutSubviews] + 200
5   UIKit                           0x00014ab0 -[UIView(CALayerDelegate) _layoutSublayersOfLayer:] + 32
6   CoreFoundation                  0x000285ba -[NSObject(NSObject) performSelector:withObject:] + 18
7   QuartzCore                      0x0000a61c -[CALayer layoutSublayers] + 176
8   QuartzCore                      0x0000a2a4 CALayerLayoutIfNeeded + 192
9   QuartzCore                      0x00009bb0 CA::Context::commit_transaction(CA::Transaction*) + 256
10  QuartzCore                      0x000097d8 CA::Transaction::commit() + 276
11  QuartzCore                      0x000119d8 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 80
12  CoreFoundation                  0x00074244 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
13  CoreFoundation                  0x00075d9e __CFRunLoopDoObservers + 494
14  CoreFoundation                  0x000772f6 __CFRunLoopRun + 934
15  CoreFoundation                  0x0001e0bc CFRunLoopRunSpecific + 220
16  CoreFoundation                  0x0001dfca CFRunLoopRunInMode + 54
17  GraphicsServices                0x00003f88 GSEventRunModal + 188
18  UIKit                           0x00007b40 -[UIApplication _run] + 564
19  UIKit                           0x00005fb8 UIApplicationMain + 964
20  my_app                      0x0000291e main (main.m:14)
21  my_app                      0x000028c8 start + 32

или, в другой раз:

0   libobjc.A.dylib                 0x00003508 objc_msgSend + 40
1   CoreFoundation                  0x00027348 -[NSObject(NSObject) performSelector:withObject:withObject:] + 20
2   UIKit                           0x00009ae4 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] + 276
3   UIKit                           0x00009b04 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] + 308
4   UIKit                           0x00009b04 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] + 308
5   UIKit                           0x00009b04 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] + 308
6   UIKit                           0x00009b04 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] + 308
7   UIKit                           0x000099bc -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:] + 28
8   UIKit                           0x000095d4 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 448
9   UIKit                           0x00009400 -[UIView(Hierarchy) addSubview:] + 28
10  UIKit                           0x0009b788 +[UIViewControllerWrapperView wrapperViewForView:frame:] + 328
11  UIKit                           0x0009e42c -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 140
12  UIKit                           0x0009e38c -[UITabBarController transitionFromViewController:toViewController:] + 32
13  UIKit                           0x0009d9d0 -[UITabBarController _setSelectedViewController:] + 248
14  UIKit                           0x0009d8c8 -[UITabBarController setSelectedViewController:] + 12
15  UIKit                           0x000b8e54 -[UITabBarController _tabBarItemClicked:] + 308
16  CoreFoundation                  0x00027348 -[NSObject(NSObject) performSelector:withObject:withObject:] + 20
17  UIKit                           0x0008408c -[UIApplication sendAction:to:from:forEvent:] + 128
18  UIKit                           0x00083ff4 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 32
19  UIKit                           0x000b8c7c -[UITabBar _sendAction:withEvent:] + 416
20  CoreFoundation                  0x00027348 -[NSObject(NSObject) performSelector:withObject:withObject:] + 20
21  UIKit                           0x0008408c -[UIApplication sendAction:to:from:forEvent:] + 128
22  UIKit                           0x00083ff4 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 32
23  UIKit                           0x00083fbc -[UIControl sendAction:to:forEvent:] + 44
24  UIKit                           0x00083c0c -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 528
25  UIKit                           0x000b8acc -[UIControl sendActionsForControlEvents:] + 16
26  UIKit                           0x000b890c -[UITabBar(Static) _buttonUp:] + 108
27  CoreFoundation                  0x00027348 -[NSObject(NSObject) performSelector:withObject:withObject:] + 20
28  UIKit                           0x0008408c -[UIApplication sendAction:to:from:forEvent:] + 128
29  UIKit                           0x00083ff4 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 32
30  UIKit                           0x00083fbc -[UIControl sendAction:to:forEvent:] + 44
31  UIKit                           0x00083c0c -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 528
32  UIKit                           0x00084484 -[UIControl touchesEnded:withEvent:] + 452
33  UIKit                           0x000824e4 -[UIWindow _sendTouchesForEvent:] + 580
34  UIKit                           0x00081b18 -[UIWindow sendEvent:] + 388
35  UIKit                           0x0007c034 -[UIApplication sendEvent:] + 444
36  UIKit                           0x0007b7e8 _UIApplicationHandleEvent + 6704
37  GraphicsServices                0x00004edc PurpleEventCallback + 1024
38  CoreFoundation                  0x000742ac __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 22
39  CoreFoundation                  0x000761d6 __CFRunLoopDoSource1 + 158
40  CoreFoundation                  0x0007718e __CFRunLoopRun + 574
41  CoreFoundation                  0x0001e0bc CFRunLoopRunSpecific + 220
42  CoreFoundation                  0x0001dfca CFRunLoopRunInMode + 54
43  GraphicsServices                0x00003f88 GSEventRunModal + 188
44  UIKit                           0x00007b40 -[UIApplication _run] + 564
45  UIKit                           0x00005fb8 UIApplicationMain + 964
46  my_app                      0x00002ba2 main (main.m:14)
47  my_app                      0x00002b4c start + 32

Что не так? Я имею в виду - мое приложение находится внизу трассировки стека в основном методе... Я проверил утечки памяти - ничего...

Спасибо за любую помощь!


person swalkner    schedule 07.07.2010    source источник
comment
Основываясь на первой трассировке стека сбоя, я бы посоветовал вам взглянуть на мой ответ на этот вопрос stackoverflow.com/questions/16320955/   -  person MoDJ    schedule 20.06.2013


Ответы (2)


Я думаю, что что-то неправильно связывается в одном из ваших представлений .xib. Другой распространенной причиной этого является вызываемый объект, который уже был освобожден из памяти. Попробуйте отследить это с помощью NSZombieEnabled

person cdnicoll    schedule 07.07.2010
comment
спасибо за ваш ответ... странно то, что он падает, только если я очень часто переключаюсь с одной вкладки на другую; в обоих представлениях таблица заполняется данными из Интернета. и если я меняюсь очень часто и очень быстро, приложение внезапно падает с этой трассировкой стека... Я думаю, что если это ошибка в .xib или выпущенном объекте, оно должно рухнуть в первый раз... - person swalkner; 07.07.2010
comment
У меня были ошибки, очень похожие на эти, когда я терял данные, потому что у меня не было надлежащего сохранения. Он автоматически выпускался, и когда мои представления отображали что-то на основе этих данных, оно умирало с такими же загадочными трассировками стека (потому что это не сбой в моем коде, а на стороне фреймворка при работе с ячейками). - person Matt S; 07.07.2010
comment
У меня была почти аналогичная проблема при очень быстром переключении представлений с помощью контроллера представления на iPad. Пока не нашел почему. - person karim; 18.06.2013

Вам не хватает соединения между xib и его контроллером.

person Brandon    schedule 07.07.2010
comment
? где ты это видишь и как узнать? также см. мой комментарий к ответу от Cosizzle... - person swalkner; 07.07.2010
comment
Это всего лишь предположение, основанное на том, что я видел подобные следы. Основываясь на вашем комментарии к другому ответу и строке 12 вашей первой трассировки, я догадываюсь, что вы пытаетесь вызвать контроллер, которого не существует. Моим первым шагом будет использование viewWillDisappear: и Dealloc, чтобы очистить все, что у вас может быть, прежде чем переключать вкладки. Удачи! - person Brandon; 07.07.2010
comment
Маловероятно, что это отсутствующее соединение в xib-файле. Если соединение не установлено, то свойство @property, которое оно устанавливает, равно нулю, и произойдет одно из двух: (1) Ничего. Например, нажатие кнопки ничего не сделает. Попытка отправить сообщение (вызов метода) переменной или свойству, которое равно nil, ничего не дает. (2) Будет выброшено исключение. В этом случае в трассировке стека будет objc_exception_throw, и будет сообщение с более подробной информацией о том, что произошло в консоли. - person Vincent Gable; 18.08.2011