EXC_BAD_ACCESS (SIGBUS) и EXC_BAD_ACCESS (SIGSEGV) аварийно завершает работу при запуске приложения - PullRequest
2 голосов
/ 20 мая 2011

У меня возникли некоторые проблемы со сбоем приложения, мне нужно какое-то направление, чтобы я мог это исправить. У меня есть приложение с основным видом и модальным видом, очень похожее на стандартный шаблон служебной программы. Когда я запускаю приложение в первый раз, все работает нормально, включая модальное представление. Однако, когда я возвращаюсь на домашний экран, а затем возвращаюсь к приложению, приложение падает, если я активировал модальное представление в предыдущем сеансе. (Не зная термина и будучи нубом, я называю это пробуждением приложения.) Если я не активировал модальное представление и просто остался в главном представлении в предыдущем сеансе, то приложение возобновляет работу без каких-либо проблемы.

Теперь у меня проблемы с отслеживанием этого вопроса, и я буду признателен за направление. Когда я останавливаю приложение во время работы через xcode, отладчик останавливается. Инструменты говорит мне, что я уже устранил все утечки памяти. Это самые последние журналы аварий:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x35248c98 0x35246000 + 11416
1   CoreLocation                    0x35205f78 0x351fe000 + 32632
2   CoreLocation                    0x35206f42 0x351fe000 + 36674
3   CoreLocation                    0x35204a64 0x351fe000 + 27236
4   CoreLocation                    0x3520078a 0x351fe000 + 10122
5   CoreLocation                    0x352018cc 0x351fe000 + 14540
6   CoreLocation                    0x35202d50 0x351fe000 + 19792
7   CoreFoundation                  0x316fd706 0x31691000 + 444166
8   CoreFoundation                  0x31706a90 0x31691000 + 481936
9   CoreFoundation                  0x31708838 0x31691000 + 489528
10  CoreFoundation                  0x31709606 0x31691000 + 493062
11  CoreFoundation                  0x31699ebc 0x31691000 + 36540
12  CoreFoundation                  0x31699dc4 0x31691000 + 36292
13  GraphicsServices                0x31018418 0x31014000 + 17432
14  GraphicsServices                0x310184c4 0x31014000 + 17604
15  UIKit                           0x317bfd62 0x31791000 + 191842
16  UIKit                           0x317bd800 0x31791000 + 182272
17  MyApp                           0x000021a4 0x1000 + 4516
18  MyApp                           0x00002158 0x1000 + 4440

И

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x709ffd70
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x35248ca4 0x35246000 + 11428
1   CoreLocation                    0x35206f42 0x351fe000 + 36674
2   CoreLocation                    0x35204a64 0x351fe000 + 27236
3   CoreLocation                    0x3520078a 0x351fe000 + 10122
4   CoreLocation                    0x352018cc 0x351fe000 + 14540
5   CoreLocation                    0x35202d50 0x351fe000 + 19792
6   CoreFoundation                  0x316fd706 0x31691000 + 444166
7   CoreFoundation                  0x31706a90 0x31691000 + 481936
8   CoreFoundation                  0x31708838 0x31691000 + 489528
9   CoreFoundation                  0x31709606 0x31691000 + 493062
10  CoreFoundation                  0x31699ebc 0x31691000 + 36540
11  CoreFoundation                  0x31699dc4 0x31691000 + 36292
12  GraphicsServices                0x31018418 0x31014000 + 17432
13  GraphicsServices                0x310184c4 0x31014000 + 17604
14  UIKit                           0x317bfd62 0x31791000 + 191842
15  UIKit                           0x317bd800 0x31791000 + 182272
16  MyApp                           0x000021a4 0x1000 + 4516
17  MyApp                           0x00002158 0x1000 + 4440

Итак, из того, что я прочитал, похоже, что я ссылаюсь на объект, который был как-то удален или перезаписан? С этим я просто хватаюсь за соломинку и не уверен, как бы я это отследил.

Мысли

1 Ответ

3 голосов
/ 20 мая 2011

Из вызова RespondsToSelector, вероятно, ваш ModalView, AddPersonViewController, я полагаю, сохраняет вместо назначения свойства делегата или не устанавливает нулевой делегат в dealloc и viewDidUnload. В этом случае он попытается отправить сообщение несуществующему, которому вы делегируете, по-прежнему содержит ссылку.

@property (nonatomic, assign) id <delegate> *delegate;


self.delegate = nil; in dealloc and viewDidUnload.
...