2016-03-16 3 views
0

Извините за публикацию, так как подобные вопросы заданы много раз.__NSArrayM index за пределами границ

Я унаследовал приложение iOS в Objective C и должен его пересмотреть. Первоначально он отлично работал в старой версии Xcode. Затем я обновил свой Xcode, а затем он перешел в неперехваченное исключение индекса массива за пределы по следующему методу.

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([MartialArtsAppDelegate class])); 
    } 
} 

Стек свалка говорит, что глубоко в рамках CoreFoundation, есть индекс 3 к NSMutableArray за пределы [0..1]. Я не уверен, что это значит. Я не вижу, какой массив он есть.

Кроме того, я не вижу, где я объявил NSMutableArray в приложении. Сетка дампа следующая. Ваша помощь будет высоко оценена.

2016-03-16 19:54:56.522 HanDynastyMartialArts[480:5616] WARNING: A Gesture recognizer (<UISwipeGestureRecognizer: 0x7ff9fa596790; state = Possible; view = <UIView 0x7ff9fa599c10>; target= <(action=upSwipeGesture:, target=<MartialArtsViewController 0x7ff9fb04ea00>)>; direction = up>) was setup in a storyboard/xib to be added to more than one view (-><UIView: 0x7ff9fa5af170; frame = (0 0; 320 450); autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7ff9fa5d77b0>; layer = <CALayer: 0x7ff9fa5af2d0>>) at a time, this was never allowed, and is now enforced. Beginning with iOS 9.0 it will be put in the first view it is loaded into. 

2016-03-16 19:54:56.587 HanDynastyMartialArts[480:5616] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM insertObject:atIndex:]: index 3 beyond bounds [0 .. 1]' 
*** First throw call stack: 

    (

    0 CoreFoundation      0x0000000106658f65 __exceptionPreprocess + 165 

    1 libobjc.A.dylib      0x00000001060d2deb objc_exception_throw + 48 

    2 CoreFoundation      0x000000010651ff55 -[__NSArrayM insertObject:atIndex:] + 901 

    3 Foundation       0x0000000105b11a11 -[NSKeyValueSlowMutableArray insertObject:atIndex:] + 106 

    4 CoreFoundation      0x0000000106574432 -[NSMutableArray insertObjects:count:atIndex:] + 162 

    5 CoreFoundation      0x000000010657419f -[NSMutableArray insertObjectsFromArray:range:atIndex:] + 335 

    6 CoreFoundation      0x0000000106574023 -[NSMutableArray addObjectsFromArray:] + 723 

    7 UIKit        0x0000000104c2e49f -[UIRuntimeOutletCollectionConnection performConnect] + 860 

    8 CoreFoundation      0x0000000106599b10 -[NSArray makeObjectsPerformSelector:] + 224 

    9 UIKit        0x0000000104967306 -[UINib instantiateWithOwner:options:] + 1864 

    10 UIKit        0x000000010475284d -[UIViewController _loadViewFromNibNamed:bundle:] + 381 

    11 UIKit        0x0000000104753179 -[UIViewController loadView] + 178 

    12 UIKit        0x000000010475347c -[UIViewController loadViewIfRequired] + 139 

    13 UIKit        0x0000000104796c26 -[UINavigationController _layoutViewController:] + 54 

    14 UIKit        0x00000001047974dd -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 433 

    15 UIKit        0x0000000104797633 -[UINavigationController _startTransition:fromViewController:toViewController:] + 116 

    16 UIKit        0x0000000104798879 -[UINavigationController _startDeferredTransitionIfNeeded:] + 890 

    17 UIKit        0x000000010479967d -[UINavigationController __viewWillLayoutSubviews] + 57 

    18 UIKit        0x000000010493163d -[UILayoutContainerView layoutSubviews] + 248 

    19 UIKit        0x000000010467911c -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710 

    20 QuartzCore       0x000000010a55536a -[CALayer layoutSublayers] + 146 

    21 QuartzCore       0x000000010a549bd0 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 

    22 QuartzCore       0x000000010a549a4e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 

    23 QuartzCore       0x000000010a53e1d5 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 

    24 QuartzCore       0x000000010a56b9f0 _ZN2CA11Transaction6commitEv + 508 

    25 QuartzCore       0x000000010a56c154 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92 

    26 CoreFoundation      0x00000001065849d7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 

    27 CoreFoundation      0x0000000106584947 __CFRunLoopDoObservers + 391 

    28 CoreFoundation      0x0000000106579ebc CFRunLoopRunSpecific + 524 

    29 UIKit        0x00000001045c398d -[UIApplication _run] + 402 

    30 UIKit        0x00000001045c8676 UIApplicationMain + 171 

    31 HanDynastyMartialArts    0x00000001042b3cbf main + 111 

    32 libdyld.dylib      0x0000000106fae92d start + 1 

    33 ???         0x0000000000000001 0x0 + 1 

    ) 
    libc++abi.dylib: terminating with uncaught exception of type NSException 
    (lldb) 
+0

Пожалуйста, смотрите http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1, чтобы узнать, как отлаживать аварии. – rmaddy

+0

Рассмотрите принятые ответы, которые являются полезными. Чтобы принять ответ, нажмите на полый флажок рядом с ответом, который лучше всего подходит, и это увеличит вашу репутацию и предоставит больше возможностей. См. [Репутация faq] (http://stackoverflow.com/faq#reputation) См. [ эту страницу] (http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) для более подробной информации. Также, пожалуйста, подумайте о возврате и принятии прошлых ответов, сделав это, увеличит вашу репутацию и предоставит больше возможностей. См. [Репутация faq] (http://stackoverflow.com/faq#reputation) – zaph

ответ

0

Чтобы увидеть фактическое утверждение, что является причиной ошибки добавить точку останова исключение:

  1. В главном меню Debug: Breakpoints: Создать Exception Breakpoint.
  2. Щелкните правой кнопкой мыши точку останова и установите исключение для Objective-C.
  3. Добавить действие: "po $ arg1".

Запустите приложение, чтобы получить точку останова, и вы попадете на строку, которая вызывает исключение, и сообщение об ошибке будет находиться в консоли отладчика.

Breakpoint example:

+0

Большое спасибо. Я попробую это вскоре после завершения моего текущего проекта. Просто слишком много дел. –

+0

@FarnWang Рассмотрите принятые ответы, которые являются полезными. Принимая ответ, вы указываете будущим читателям, что это правильный ответ. Чтобы принять ответ, нажмите на полый флажок рядом с лучшим ответом, сделав это, увеличит вашу репутацию и предоставит больше возможностей. См. [Репутация faq] (http://stackoverflow.com/faq#reputation). См. [На этой странице ] (http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) для более подробной информации. Также, пожалуйста, подумайте о возврате и принятии прошлых ответов, делая это, увеличит вашу репутацию и предоставит больше возможностей. – zaph

Смежные вопросы