2012-06-20 1 views
-2

Я разрабатываю игру в палач для iPhone и iPad, но иногда он падает. вот журнал Крушение Xcode:iPhone App падает, даже если ARC ... помогите мне найти проблему, пожалуйста,

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation    0x353e788f `__exceptionPreprocess`+ 163 
1 libobjc.A.dylib     0x3778e259 objc_exception_throw + 33 
2 CoreFoundation     0x353e7789 +[NSException raise:format:] + 1 
3 CoreFoundation     0x353e77ab +[NSException raise:format:] + 35 
4 CoreFoundation     0x35354fed`-[__NSCFString characterAtIndex:]`+ 89 
5 Poke Hangman     0x000e41f5 -[ViewController setStringWithDatabase::](ViewController.m:194) 
6 Poke Hangman     0x000e388b -[ViewController preparaStringhe:] (ViewController.m:39) 
7 Poke Hangman     0x000e4685 -[ViewController cambia] (ViewController.m:248) 
8 Poke Hangman     0x000e3bc5 -[ViewController checkChar:] (ViewController.m:81) 
9 Poke Hangman     0x000e6155 -[ViewController ButtonG:] (ViewController.m:579) 
10 CoreFoundation     0x353413fd -[NSObject performSelector:withObject:withObject:] + 53 
11 UIKit       0x32e36e07 -[UIApplication sendAction:to:from:forEvent:] + 63 
12 UIKit       0x32e36dc3 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31 
13 UIKit       0x32e36da1 -[UIControl sendAction:to:forEvent:] + 45 
14 UIKit       0x32e36b11 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 493 
15 UIKit       0x32e37449 -[UIControl touchesEnded:withEvent:] + 477 
16 UIKit       0x32e3592b -[UIWindow _sendTouchesForEvent:] + 319 
17 UIKit       0x32e35319 -[UIWindow sendEvent:] + 381 
18 UIKit       0x32e1b695 -[UIApplication sendEvent:] + 357 
19 UIKit       0x32e1af3b _UIApplicationHandleEvent + 5827 
20 GraphicsServices    0x36fda22b PurpleEventCallback + 883 
21 CoreFoundation     0x353bb523 <br>`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__`+ 39 
22 CoreFoundation     0x353bb4c5 __CFRunLoopDoSource1 + 141 
23 CoreFoundation     0x353ba313 __CFRunLoopRun + 1371 
24 CoreFoundation     0x3533d4a5 CFRunLoopRunSpecific + 301 
25 CoreFoundation     0x3533d36d CFRunLoopRunInMode + 105 
26 GraphicsServices    0x36fd9439 GSEventRunModal + 137 
27 UIKit       0x32e49cd5 UIApplicationMain + 1081 
28 Poke Hangman     0x000e3263 main (main.m:16) 
29 Poke Hangman     0x000e3208 start + 40 


Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x35c9d32c __pthread_kill + 8 
1 libsystem_c.dylib    0x327e9208 pthread_kill + 48 
2 libsystem_c.dylib    0x327e2298 abort + 88 
3 libc++abi.dylib     0x3579ff64 abort_message + 40 
4 libc++abi.dylib     0x3579d346 _ZL17default_terminatev + 18 
5 libobjc.A.dylib     0x3778e350 _objc_terminate + 140 
6 libc++abi.dylib     0x3579d3be _ZL19safe_handler_callerPFvvE + 70 
7 libc++abi.dylib     0x3579d44a std::terminate() + 14 
8 libc++abi.dylib     0x3579e81e __cxa_rethrow + 82 
9 libobjc.A.dylib     0x3778e2a2 objc_exception_rethrow + 6 
10 CoreFoundation     0x3533d506 CFRunLoopRunSpecific + 398 
11 CoreFoundation     0x3533d366 CFRunLoopRunInMode + 98 
12 GraphicsServices    0x36fd9432 GSEventRunModal + 130 
13 UIKit       0x32e49cce UIApplicationMain + 1074 
14 Poke Hangman     0x000e325c main (main.m:16) 
15 Poke Hangman     0x000e3200 start + 32 

Thread 1 name: Dispatch queue: com.apple.libdispatch-manager 
Thread 1: 
0 libsystem_kernel.dylib   0x35c8d3a8 kevent + 24 
1 libdispatch.dylib    0x34277f04 _dispatch_mgr_invoke + 708 
2 libdispatch.dylib    0x34277c22 _dispatch_mgr_thread + 30 

Thread 2 name: WebThread 
Thread 2: 
0 libsystem_kernel.dylib   0x35c8d004 mach_msg_trap + 20 
1 libsystem_kernel.dylib   0x35c8d1fa mach_msg + 50 
2 CoreFoundation     0x353bb3ec __CFRunLoopServiceMachPort + 120 
3 CoreFoundation     0x353ba124 __CFRunLoopRun + 876 
4 CoreFoundation     0x3533d49e CFRunLoopRunSpecific + 294 
5 CoreFoundation     0x3533d366 CFRunLoopRunInMode + 98 
6 WebCore       0x3123cc9c _ZL12RunWebThreadPv + 396 
7 libsystem_c.dylib    0x327aa72e _pthread_start + 314 
8 libsystem_c.dylib    0x327aa5e8 thread_start + 0 

Thread 0 crashed with ARM Thread State: 
    r0: 0x00000000 r1: 0x00000000  r2: 0x00000001  r3: 0x00000000 
    r4: 0x00000006 r5: 0x3e9f4d98  r6: 0x00000002  r7: 0x2fee09f0 
    r8: 0x002ad500 r9: 0x00000000  r10: 0x3ee51bc0  r11: 0x00000001 
    ip: 0x00000148 sp: 0x2fee09e4  lr: 0x327e920f  pc: 0x35c9d32c 
    cpsr: 0x00000010 

решить эту проблему, но имея новый:

вот журнал аварии:

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x39ee717b`__exceptionPreprocess +`163 
1 libobjc.A.dylib     0x34ea095b objc_exception_throw + 31 
2 CoreFoundation     0x39ee709d -[NSException initWithCoder:] + 1 
3 CoreFoundation     0x39e4bd5b -[__NSCFString characterAtIndex:] + 87 
4 Poke Hangman     0x00077493 0x74000 + 13459 
5 Poke Hangman     0x0007644b 0x74000 + 9291 
6 Poke Hangman     0x00077a35 0x74000 + 14901 
7 Poke Hangman     0x00076839 0x74000 + 10297 
8 Poke Hangman     0x0007aa7b 0x74000 + 27259 
9 UIKit       0x32e4dd09 -[UIApplication sendAction:to:from:forEvent:] + 73 
10 UIKit       0x32e4dcbb -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31 
11 UIKit       0x32e4dc95 -[UIControl sendAction:to:forEvent:] + 45 
12 UIKit       0x32e4d9eb -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 
13 UIKit       0x32e4e369 -[UIControl touchesEnded:withEvent:] + 489 
14 UIKit       0x32e4c791 -[UIWindow _sendTouchesForEvent:] + 525 
15 UIKit       0x32e3a72d -[UIApplication sendEvent:] + 381 
16 UIKit       0x32e3a009 _UIApplicationHandleEvent + 6057 
17 GraphicsServices    0x33f04603 _PurpleEventCallback + 591 
18 GraphicsServices    0x33f04233 PurpleEventCallback + 35 
19 CoreFoundation     0x39eb7873 `__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__`+ 35 
20 CoreFoundation     0x39eb7817 __CFRunLoopDoSource1 + 139 
21 CoreFoundation     0x39eb6611 __CFRunLoopRun + 1385 
22 CoreFoundation     0x39e33be5 CFRunLoopRunSpecific + 357 
23 CoreFoundation     0x39e33a71 CFRunLoopRunInMode + 105 
24 GraphicsServices    0x33f0334b GSEventRunModal + 75 
25 UIKit       0x32e607f5 UIApplicationMain + 1121 
26 Poke Hangman     0x00075f65 0x74000 + 8037 
27 Poke Hangman     0x00075f00 0x74000 + 7936 

пожалуйста, помогите мне найти вопрос ..

вот раздел, где я думаю, что он сбой: isPresent сообщает, присутствует ли символ пользователя в слове или нет если пользовательский символ существует в правильном слове, в искривленном, он поменяется местами в позиции i. если нет, то оценка будет ниже на 20. извините за мой плохой английский и надеюсь, что вы мне поможем;)

bool isPresent = NO;

for (int i = 0; i < correctWord.length; i++) 

    if (userCharFromButton == [correctWord characterAtIndex:i]) 
    { 
     criptedWord = [criptedWord stringByReplacingCharactersInRange:NSMakeRange(i, 1.0) withString:[NSString stringWithFormat:@"%c", userCharFromButton]]; 
     isPresent = YES; 
    }  

word.text = criptedWord; 

if (isPresent == NO) 
    currentlyScore -= 20; 


//check if the word is complete 
bool complete = YES; 

for (int i = 1; i < criptedWord.length; i++) 
    if ([criptedWord characterAtIndex:i] == '-') 
     complete = NO; 
+1

1. Несмотря на заголовок вашего вопроса («iPhone App падает, даже если ARC ...»), использование ARC не означает, что вы можете писать код так, как вам нравится. Вы все равно можете вызвать сбои. 2. Идите и прочитайте заметки разработчика Apple для отладки. Научитесь использовать инструменты, которые они предоставляют вам. –

+0

Попробуйте положить отладчик в методы, где он сбой. –

ответ

2

Аварийный журнал показывает обратную трассу, которая была символизирована. Оттуда вы можете увидеть на 5-ом пункте вашего последнего Exception трассировку

5 Poke Hangman     0x000e41f5 -[ViewController setStringWithDatabase::](ViewController.m:194) 

Он находится в вашем setStringWithDatabase :: в классе ViewController на линии 194, который вызывает исключение.

На строке выше, вы можете увидеть

4 CoreFoundation     0x35354fed`-[__NSCFString characterAtIndex:]`+ 89 

Так что ваш setStringWithDatabase :: должен быть вызов CoreFoundation characterAtIndex: метод, который вы непосредственно назвать себя или что-то вы звоните вызывает его по линии 194 в классе ViewController , Основная причина в том, что ваша строка равна nil/empty или вы пытаетесь получить символ за пределами диапазона.

Проблема, похоже, не связана с использованием ARC.

[ниже подходит второй бит]

Как уже упоминалось в моем ответе, ваша вторая проблема также, кажется, похож на первый. Вы должны убедиться, что ваша строка criptedWord не равна нулю, и нет никакой другой связи с этой переменной, которая сбрасывает ее. Чтобы дополнительно диагностировать, вам необходимо сначала символизировать свои журналы сбоев.

+0

ОК сопрягается я нашел исключение: раньше: если ([Parola characterAtIndex: I] == "") теперь: если ([Parola characterAtIndex: я] == ''') – Spale350z

+0

Update ваш вопрос чтобы включить некоторые из этого кода, чтобы мы могли помочь вам найти фактическую причину его срыва – jrturton

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