2017-02-09 75 views
0

我做出UIAleartView显示信息时,首先初始化:UIAlertView中显示碰撞

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" 
                message:@"..." 
                delegate:self 
              cancelButtonTitle:@"..." 
              otherButtonTitles:@"...", nil]; 
alertView.tag = 1; 
[alertView show]; 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    switch (alertView.tag) { 
     case 1: { 
      [UICKeyChainStore setString:@"YES" forKey:kDebutFirstMsgShow]; 
      if (buttonIndex == 0) { 
       NSNotificationCenter *noti = [NSNotificationCenter defaultCenter]; 
       [noti postNotificationName:@"...." object:nil]; 
      } 
      break; 
     } 

     default: 
      break; 
    } 
} 

这里是日志:

2017-02-10 01:16:44.206 audition[1740:55532] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array' 
*** First throw call stack: 
(
    0 CoreFoundation      0x000000010b09bd4b __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x000000010aad421e objc_exception_throw + 48 
    2 CoreFoundation      0x000000010afcd2eb -[__NSArrayM objectAtIndex:] + 203 
    3 UIKit        0x0000000109854e8f __86-[_UIAlertControllerView _unlocalizedOrderedPresentableAlertActionViewRepresentations]_block_invoke + 68 
    4 CoreFoundation      0x000000010b02b0b2 __53-[__NSArrayM enumerateObjectsWithOptions:usingBlock:]_block_invoke + 114 
    5 CoreFoundation      0x000000010b02af42 -[__NSArrayM enumerateObjectsWithOptions:usingBlock:] + 194 
    6 UIKit        0x0000000109854dfc -[_UIAlertControllerView _unlocalizedOrderedPresentableAlertActionViewRepresentations] + 213 
    7 UIKit        0x00000001098543b5 -[_UIAlertControllerView _reloadInterfaceActionViewRepresentations] + 50 
    8 UIKit        0x0000000109855f6e -[_UIAlertControllerView _setVisualStyle:] + 380 
    9 UIKit        0x00000001090bab35 -[UIAlertController _updateProvidedStyleWithTraitCollection:] + 455 
    10 UIKit        0x00000001090bac0f -[UIAlertController _updateProvidedStyle] + 57 
    11 UIKit        0x00000001090bae7a -[UIAlertController traitCollectionDidChange:] + 236 
    12 UIKit        0x0000000108eedfac -[UIViewController _traitCollectionDidChange:] + 108 
    13 UIKit        0x0000000108eee0cf -[UIViewController _updateTraitsIfNecessary] + 269 
    14 UIKit        0x0000000108e12957 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 884 
    15 QuartzCore       0x000000010bb2abf8 -[CALayer layoutSublayers] + 146 
    16 QuartzCore       0x000000010bb1e440 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 
    17 UIKit        0x0000000108e00928 -[UIView(Hierarchy) layoutBelowIfNeeded] + 1509 
    18 UIKit        0x0000000108df6e33 -[UIView(Geometry) setBounds:] + 2387 
    19 UIKit        0x0000000108df603d -[UIView(Geometry) _applyISEngineLayoutValuesToBoundsOnly:] + 608 
    20 UIKit        0x0000000108e0080e -[UIView(Hierarchy) layoutBelowIfNeeded] + 1227 
    21 UIKit        0x0000000108df315b -[UIView(Geometry) setFrame:] + 1297 
    22 UIKit        0x00000001090b9f26 -[UIAlertController loadView] + 201 
    23 UIKit        0x0000000108eef61c -[UIViewController loadViewIfRequired] + 201 
    24 UIKit        0x0000000108eefe70 -[UIViewController view] + 27 
    25 UIKit        0x0000000108f0a0a5 -[UIViewController _setPresentationController:] + 100 
    26 UIKit        0x0000000108f015f4 -[UIViewController _presentViewController:modalSourceViewController:presentationController:animationController:interactionController:completion:] + 1355 
    27 UIKit        0x0000000108f0328e -[UIViewController _presentViewController:withAnimationController:completion:] + 4971 
    28 UIKit        0x0000000108f0626b -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 530 
    29 UIKit        0x0000000108f05d51 -[UIViewController presentViewController:animated:completion:] + 179 
    30 UIKit        0x00000001098413bf -[_UIAlertControllerShimPresenterWindow presentAlertController:animated:completionBlock:] + 642 
    31 UIKit        0x000000010983f6f6 -[_UIAlertControllerShimPresenter _presentAlertControllerAnimated:completion:] + 219 
    32 UIKit        0x00000001090d42e6 -[UIAlertView _showAnimated:] + 278 
    33 audition       0x00000001063f9840 -[DebutVC viewWillAppear:] + 448 
    34 UIKit        0x0000000108ef596f -[UIViewController _setViewAppearState:isAnimating:] + 692 
    35 UIKit        0x0000000108ef607f -[UIViewController __viewWillAppear:] + 147 
    36 UIKit        0x0000000108e0b59b __86+[UIView(Internal) _transitionFromView:toView:duration:options:animations:completion:]_block_invoke + 62 
    37 UIKit        0x0000000108e085c0 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 581 
    38 UIKit        0x0000000108e087f2 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:animations:start:completion:] + 145 
    39 UIKit        0x0000000108e0b4bf +[UIView(Internal) _transitionFromView:toView:duration:options:animations:completion:] + 603 
    40 UIKit        0x0000000108f1677a -[UIViewController(UIContainerViewControllerProtectedMethods) transitionFromViewController:toViewController:duration:options:animations:completion:] + 771 
    41 audition       0x000000010645c1b1 -[MHTabBarController setSelectedIndex:animated:] + 2849 
    42 audition       0x000000010645cca3 -[MHTabBarController tabButtonPressed:] + 99 
    43 UIKit        0x0000000108d4f8bc -[UIApplication sendAction:to:from:forEvent:] + 83 
    44 UIKit        0x0000000108ed5c38 -[UIControl sendAction:to:forEvent:] + 67 
    45 UIKit        0x0000000108ed5f51 -[UIControl _sendActionsForEvents:withEvent:] + 444 
    46 UIKit        0x0000000108ed4910 -[UIControl touchesBegan:withEvent:] + 304 
    47 UIKit        0x0000000108dbd285 -[UIWindow _sendTouchesForEvent:] + 2043 
    48 UIKit        0x0000000108dbec33 -[UIWindow sendEvent:] + 4011 
    49 UIKit        0x0000000108d6b9ab -[UIApplication sendEvent:] + 371 
    50 UIKit        0x000000010955872d __dispatchPreprocessedEventFromEventQueue + 3248 
    51 UIKit        0x0000000109551463 __handleEventQueue + 4879 
    52 CoreFoundation      0x000000010b040761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    53 CoreFoundation      0x000000010b02598c __CFRunLoopDoSources0 + 556 
    54 CoreFoundation      0x000000010b024e76 __CFRunLoopRun + 918 
    55 CoreFoundation      0x000000010b024884 CFRunLoopRunSpecific + 420 
    56 GraphicsServices     0x000000010ca64a6f GSEventRunModal + 161 
    57 UIKit        0x0000000108d4dc68 UIApplicationMain + 159 
    58 audition       0x0000000106493c91 main + 241 
    59 libdyld.dylib      0x000000010d05868d start + 1 

从日志文件NSRangeException有一个数组空的,但是我访问元素0。但是 当我评论[alertview show]时,崩溃消失; 这次事故的原因是什么?

+0

'UIAlertView'已被弃用了几年。使用'UIAlertController'。 – rmaddy

+0

尝试将'show'代码从'viewWillAppear'移动到'viewDidAppear'并查看是否有任何区别。 – matt

+0

谢谢@matt,解决了我的问题 – Sakura1108

回答

2

崩溃日志显示,你的代码是发生在这里:

33 audition 0x00000001063f9840 -[DebutVC viewWillAppear:] + 448 

不能showviewWillAppear警报,因为你的观点是不是在界面,但(这出现,但它还没有这样做)。请尝试将您的show代码改为viewDidAppear