iOS App在启动时崩溃

时间:2012-05-15 16:50:14

标签: iphone ios ipad crash stack-trace

我的应用的最新版本在启动时已经开始为某些用户崩溃。 itunes中只有一个崩溃报告,包含在下面。我无法在任何设备上重现。

两个版本之间的变化是

  1. 集成两个第三方库(iNotify,openUDID)
  2. 从GCC编译器切换到Apple LLVM 3.1编译器(新库需要arc支持)
  3. 在启用了arc的情况下编译了新库的代码,对项目的其余部分禁用了左弧。
  4. 我在ideotify的appdelegate中为didFinishLaunchingWithOptions添加了1行。从堆栈跟踪到我不认为它在那里崩溃。

    有点不知所措。任何帮助,将不胜感激。谢谢!

    Hardware Model:      iPhone4,1
    Process:         MyAPP [3251]
    Path:            /var/mobile/Applications/228BBF42-A374-4773-8C18-EFA47CE98C02/MyAPP.app/MyAPP
    Identifier:      MyAPP
    Version:         ??? (???)
    Code Type:       ARM (Native)
    Parent Process:  launchd [1]
    
    Date/Time:       2012-05-03 19:50:07.917 -0500
    OS Version:      iPhone OS 5.1 (9B179)
    Report Version:  104
    
    Exception Type:  EXC_CRASH (SIGABRT)
    Exception Codes: 0x00000000, 0x00000000
    Crashed Thread:  0
    
    Last Exception Backtrace:
    0   CoreFoundation                    0x3729e88f __exceptionPreprocess + 163
    1   libobjc.A.dylib                   0x357a4259 objc_exception_throw + 33
    2   CoreFoundation                    0x372a1a9b -[NSObject doesNotRecognizeSelector:] + 175
    3   CoreFoundation                    0x372a0915 ___forwarding___ + 301
    4   CoreFoundation                    0x371fb650 _CF_forwarding_prep_0 + 48
    5   UIKit                             0x33aa9f93 -[UIAlertView(Private) _popoutAnimationDidStop:finished:] + 855
    6   UIKit                             0x3395fc53 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 471
    7   UIKit                             0x3396557d -[UIViewAnimationState animationDidStop:finished:] + 53
    8   QuartzCore                        0x341fbc2f CA::Layer::run_animation_callbacks(void*) + 203
    9   libdispatch.dylib                 0x344f6ee7 _dispatch_main_queue_callback_4CF$VARIANT$mp + 195
    10  CoreFoundation                    0x372712ad __CFRunLoopRun + 1269
    11  CoreFoundation                    0x371f44a5 CFRunLoopRunSpecific + 301
    12  CoreFoundation                    0x371f436d CFRunLoopRunInMode + 105
    13  GraphicsServices                  0x32101439 GSEventRunModal + 137
    14  UIKit                             0x33978e7d UIApplicationMain + 1081
    15  MyAPP                          0x00002bfb main (main.m:14)
    16  MyAPP                          0x00002bb4 0x00002bb4
    
    
    Thread 0 name:  Dispatch queue: com.apple.main-thread
    Thread 0 Crashed:
    0   libsystem_kernel.dylib            0x3571d32c __pthread_kill + 8
    1   libsystem_c.dylib                 0x3186b208 pthread_kill + 48
    2   libsystem_c.dylib                 0x31864298 abort + 88
    3   libc++abi.dylib                   0x34e70f64 abort_message + 40
    4   libc++abi.dylib                   0x34e6e346 _ZL17default_terminatev + 18
    5   libobjc.A.dylib                   0x357a4350 _objc_terminate + 140
    6   libc++abi.dylib                   0x34e6e3be _ZL19safe_handler_callerPFvvE + 70
    7   libc++abi.dylib                   0x34e6e44a std::terminate() + 14
    8   libc++abi.dylib                   0x34e6f81e __cxa_rethrow + 82
    9   libobjc.A.dylib                   0x357a42a2 objc_exception_rethrow + 6
    10  CoreFoundation                    0x371f4506 CFRunLoopRunSpecific + 398
    11  CoreFoundation                    0x371f4366 CFRunLoopRunInMode + 98
    12  GraphicsServices                  0x32101432 GSEventRunModal + 130
    13  UIKit                             0x33978e76 UIApplicationMain + 1074
    14  MyAPP                          0x00002bf4 main (main.m:14)
    15  MyAPP                          0x00002bac 0x00002bac
    
    Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
    Thread 1:
    0   libsystem_kernel.dylib            0x3570d3a8 kevent + 24
    1   libdispatch.dylib                 0x344f7f04 _dispatch_mgr_invoke + 708
    2   libdispatch.dylib                 0x344f7c22 _dispatch_mgr_thread + 30
    
    Thread 2 name:  WebThread
    Thread 2:
    0   libsystem_kernel.dylib            0x3570d004 mach_msg_trap + 20
    1   libsystem_kernel.dylib            0x3570d1fa mach_msg + 50
    2   CoreFoundation                    0x372723ec __CFRunLoopServiceMachPort + 120
    3   CoreFoundation                    0x37271124 __CFRunLoopRun + 876
    4   CoreFoundation                    0x371f449e CFRunLoopRunSpecific + 294
    5   CoreFoundation                    0x371f4366 CFRunLoopRunInMode + 98
    6   WebCore                           0x32eb40f0 _ZL12RunWebThreadPv + 396
    7   libsystem_c.dylib                 0x3182c72e _pthread_start + 314
    8   libsystem_c.dylib                 0x3182c5e8 thread_start + 0
    
    Thread 3:
    0   libsystem_kernel.dylib            0x3571dcd4 __workq_kernreturn + 8
    1   libsystem_c.dylib                 0x31826f36 _pthread_wqthread + 610
    2   libsystem_c.dylib                 0x31826cc8 start_wqthread + 0
    
    Thread 4 name:  com.apple.CFSocket.private
    Thread 4:
    0   libsystem_kernel.dylib            0x3571d570 __select + 20
    1   CoreFoundation                    0x3727663a __CFSocketManager + 726
    2   libsystem_c.dylib                 0x3182c72e _pthread_start + 314
    3   libsystem_c.dylib                 0x3182c5e8 thread_start + 0
    
    Thread 5:
    0   libsystem_kernel.dylib            0x3571dcd4 __workq_kernreturn + 8
    1   libsystem_c.dylib                 0x31826f36 _pthread_wqthread + 610
    2   libsystem_c.dylib                 0x31826cc8 start_wqthread + 0
    

    一些额外的代码。

    appdelegate中定义了一个alertview,如下所示:

    #import <UIKit/UIKit.h>
    
    
    @class MyAPPViewController;
    
    
    @interface MyAPPAppDelegate : NSObject <UIApplicationDelegate> {
        UIViewController *rvc;
        UIAlertView *m_cAlertControl;
    }
    
    @property (nonatomic, retain) IBOutlet UIWindow *window;
    
    
    -(BOOL)shouldNag;
    -(void)shouldEnableUI:(BOOL)pIsEnable;
    -(void)updateRunCount;
    
    @end
    

    以及在app委托中实现的方法如下:

    -(void)shouldEnableUI:(BOOL)pIsEnable
    { 
        if(NO == pIsEnable)
        {
            if (nil == m_cAlertControl) {
            m_cAlertControl = [[UIAlertView alloc] init];
        }
        m_cAlertControl.backgroundColor = [UIColor clearColor];
        m_cAlertControl.opaque = NO;
        [m_cAlertControl setHidden:YES];
        [m_cAlertControl show];
    }
    else {
        if (nil != m_cAlertControl) {
            [m_cAlertControl dismissWithClickedButtonIndex:0 animated:YES];
        }
    }
    

    }

    View控制器调用这样的方法:

    [appDelegate shouldEnableUI:NO];

2 个答案:

答案 0 :(得分:4)

看到崩溃日志后,问题似乎已在UIAlertViewDelegate发布后调用。

您需要在使用警报的控制器中释放它 -

-(void)dealloc {
    self.alertView.delegate = nil; //setting delegate to nil
    self.alertView = nil; //if you have defined alert as property
    //other release statements of your controller
    [super dealloc];
}

如果您需要其他信息,可以添加应用的一些代码,或者您的应用不是这种情况。

编辑1 -

-(void)dealloc {
    m_cAlertControl.delegate = nil; //setting delegate to nil
    [m_cAlertControl release];

    //other release statements of your controller
    [super dealloc];
}

答案 1 :(得分:0)

我会说这是你拥有的最大指针

[NSObject doesNotRecognizeSelector:] + 175

看起来你某处缺少选择器方法。