2012-02-09 72 views
5

我有以下崩溃,我无法在需求下复制,但确实发生了足以让用户注意到的情况。进入崩溃的底部

此崩溃报告也已被标记。你会如何找出原因!这似乎只发生在4.1

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x9f069184 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x000027d8 objc_msgSend + 16 
1 CoreFoundation      0x0007d749 ____CFXNotificationPost_old_block_invoke_1 + 45 
2 libSystem.B.dylib     0x000d5984 _dispatch_call_block_and_release + 20 
3 libSystem.B.dylib     0x000d66b0 _dispatch_continuation_pop + 72 
4 libSystem.B.dylib     0x000d69fc _dispatch_main_queue_callback_4CF + 220 
5 CoreFoundation      0x0002789b __CFRunLoopRun + 1335 
6 CoreFoundation      0x00027277 CFRunLoopRunSpecific + 231 
7 CoreFoundation      0x0002717f CFRunLoopRunInMode + 59 
8 GraphicsServices     0x000045f3 GSEventRunModal + 115 
9 GraphicsServices     0x0000469f GSEventRun + 63 
10 UIKit        0x00004123 -[UIApplication _run] + 403 
11 UIKit        0x0000212f UIApplicationMain + 671 
12 MyApp        0x000024e3 main (main.m:17) 

我已经设法得到更多的信息,但没有太多。

2012-02-12 18:03:04.556 MyApp[462:307] (null): unrecognized selector sent to class 0x3e0a360c 
2012-02-12 18:03:04.618 MyApp[462:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '(null): unrecognized selector sent to class 0x3e0a360c' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x33506ed3 __exceptionPreprocess + 114 
    1 libobjc.A.dylib      0x30412811 objc_exception_throw + 24 
    2 CoreFoundation      0x335086ff +[NSObject(NSObject) doesNotRecognizeSelector:] + 102 
    3 CoreFoundation      0x334b01d9 ___forwarding___ + 508 
    4 CoreFoundation      0x334aff90 _CF_forwarding_prep_0 + 48 
    5 Foundation       0x302a86b3 _nsnote_callback + 142 
    6 CoreFoundation      0x334e4749 ____CFXNotificationPost_old_block_invoke_1 + 44 
    7 libSystem.B.dylib     0x31d05984 _dispatch_call_block_and_release + 20 
    8 libSystem.B.dylib     0x31d066b0 _dispatch_continuation_pop + 72 
    9 libSystem.B.dylib     0x31d069fc _dispatch_main_queue_callback_4CF + 220 
    10 CoreFoundation      0x3348e89b __CFRunLoopRun + 1334 
    11 CoreFoundation      0x3348e277 CFRunLoopRunSpecific + 230 
    12 CoreFoundation      0x3348e17f CFRunLoopRunInMode + 58 
    13 GraphicsServices     0x31b5e5f3 GSEventRunModal + 114 
    14 GraphicsServices     0x31b5e69f GSEventRun + 62 
    15 UIKit        0x341bd123 -[UIApplication _run] + 402 
    16 UIKit        0x341bb12f UIApplicationMain + 670 

现在我所有的addObservers都是基于块的,所以我不明白为什么它会导致无法识别的选择器。

+0

我不知道,所以我没有发布答案,但它看起来像试图调用已经发布的Block? – Jasarien 2012-02-09 11:12:18

+1

不知道这是否是原因,但我会检查是否在释放之前将对象作为观察者(到'NSNotificationCenter')移除。 – 2012-02-09 11:18:33

+0

仅仅因为NSNotification,你的崩溃是肯定的吗?尝试注释掉该代码并运行。 – Mrunal 2012-02-12 13:47:04

回答

2

这种方式在调试崩溃时不会帮助我们很多。我发现调试Crash代码的最佳方法之一。按照链接,调试技术:

http://cocoadev.com/DebuggingAutorelease

你需要非常仔细地分析您的控制台来实际看看为什么发生崩溃。这让我几乎所有的都没有启用ARC守则......

希望这能帮助你....

的nJoy编码... :)

+0

谢谢,这帮了很多! – 2012-02-12 21:42:18

+0

欢迎随时.... :) – DShah 2012-02-13 04:52:56

+0

链接丢失。 – trojanfoe 2013-08-30 05:52:59