Сбой приложения при возврате к предыдущему представлению — поток 1: EXC_BAD_ACCESS

У меня есть два основных вида с метками, текстовыми полями и переключателями:
owerviewПервый вид — это корневой вид навигационный контроллер. Существует именованный переход от первого представления ко второму виду, который называется «следующий», вызываемый при нажатии кнопки панели «İleri» в первом представлении. Вот мой код для обоих ViewController:

HMXNewPersonelStep1ViewController.h

HMXNewPersonelStep1ViewController.m

HMXNewPersonelStep2ViewController.h

HMXNewPersonelStep2ViewController.m

Я запускаю приложение, нажимая кнопку «İleri» в первом представлении и без проблем перехожу ко второму представлению. Но когда я нажимаю кнопку "Гери" во втором представлении, программа возвращается к первому представлению, я вижу первое представление в течение короткого времени, и приложение вылетает со следующей ошибкой:

Thread 1: EXC_BAD_ACCESS

Он аварийно завершает работу:
точка сбоя

Трассировка отладки:

трассировка отладки

Сведения об отладке для [_NSDictionaryM Dealloc]:

libobjc.A.dylib`-[NSObject release]:
0x11339d0:  pushl  %ebp
0x11339d1:  movl   %esp, %ebp
0x11339d3:  pushl  %edi
0x11339d4:  pushl  %esi
0x11339d5:  subl   $16, %esp
0x11339d8:  calll  0x11339dd                 ; -[NSObject release] + 13
0x11339dd:  popl   %edi
0x11339de:  movl   8(%ebp), %esi
0x11339e1:  movl   %esi, (%esp)
0x11339e4:  calll  0x1132541                 ; _objc_rootReleaseWasZero
0x11339e9:  testb  %al, %al
0x11339eb:  je     0x11339ff                 ; -[NSObject release] + 47
0x11339ed:  movl   995643(%edi), %eax
0x11339f3:  movl   %eax, 4(%esp)
0x11339f7:  movl   %esi, (%esp)
0x11339fa:  calll  0x113108c                 ; objc_msgSend
0x11339ff:  addl   $16, %esp                 ; This line was highlighted
0x1133a02:  popl   %esi
0x1133a03:  popl   %edi
0x1133a04:  popl   %ebp
0x1133a05:  ret

Я включил зомби-объекты, как было предложено, и вот сообщение перед сбоем:

2013-10-07 17:07:23.113 Arendi[5783:c07] *** -[UIDeviceRGBColor release]: message sent to deallocated instance 0x8171e90

person Olcay Ertaş    schedule 07.10.2013    source источник
comment
У вас есть трассировка стека с левой стороны? Должен быть список вызовов по порядку, который приводит к сбою. Попробуйте попасть в первый в вашем коде.   -  person Grzegorz Krukowski    schedule 07.10.2013
comment
@GrzegorzKrukowski Я добавил трассировку отладки. Но ничего полезного не нашел.   -  person Olcay Ertaş    schedule 07.10.2013
comment
Я удалил все розетки и соединения и отключил регистрацию уведомлений клавиатуры и распознаватель жестов для прокрутки, но это не помогло.   -  person Olcay Ertaş    schedule 07.10.2013
comment
Он падает на [выпуске NSDictonary] — может быть, вы перевыпускаете этот объект, и это Zombie? Нажмите 2 — [_NSDictonary Dealloc] и посмотрите, к чему это приведет — вставьте нам функцию, которая вызывает это.   -  person Grzegorz Krukowski    schedule 07.10.2013
comment
@GrzegorzKrukowski Я добавил вывод консоли с включенными зомби, это дает вам какое-то представление?   -  person Olcay Ertaş    schedule 07.10.2013
comment
Вы перевыпускаете этот UIDeviceRGBColor или используете его после его выпуска. Где вы храните его как собственность? Можете ли вы вставить код там, где вы его используете (свойство + при его создании)? Я не вижу его нигде в вашем коде.   -  person Grzegorz Krukowski    schedule 07.10.2013


Ответы (4)


Я изменил цвет оттенка большого пальца UISwitch на значение по умолчанию, и проблема решена. Я ненавижу Xcode! Спасибо за все ответы и советы.

person Olcay Ertaş    schedule 07.10.2013
comment
была та же проблема, только ошибка, которую выдавала моя, была *** -[UIDeviceRGBColor set]: сообщение отправлено в освобожденный экземпляр - person rbertsch8; 21.11.2013

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

Возможно, обработка backButtonClicked:sender(HMXNewPersonelStep2ViewController.m) не нужна.

person h.usune    schedule 07.10.2013

вы объявили activeField сильным, но напрямую используете это свойство. может быть преждевременное освобождение ваших текстовых полей. добавьте @synthesize для него и попробуйте.

person Tejesh Alimilli    schedule 07.10.2013
comment
с ARC мы можем пропустить сохранение и выпуск, но нам понадобится @synthesize или нам придется предоставить геттер и сеттер самостоятельно. - person Tejesh Alimilli; 07.10.2013
comment
@OlcayErtaş попытался включить объекты NSZombie, которые действительно могут помочь, stackoverflow.com/a/4917557/784009 - person Tejesh Alimilli; 07.10.2013

Когда вы касаетесь кнопки «Назад», возможно, вы пытаетесь добраться до объекта второго вида? Попробуйте использовать AllExceptions и посмотрите. Или, если вы используете подключение к Интернету, такое как Asihttprequest, очистите или отмените делегат вашего экземпляра.

Merhaba kardeş, eğer 1.viewe döndüğünde 2. viewde birşeyler değişmeye çalışıyorsa bundan kaynaklanıyordur büyük ihtimalle. Asihttprequest kullanıp değişiklikleri serverea yazıyorsan ve daha bağlantı sonucu dönmeeden geriye basıyorsan bu çok normaldir.

person mialkan    schedule 07.10.2013
comment
Нет, я пока ничего не пытаюсь сделать. Весь интерфейс тупой. У меня была эта ошибка на прошлой неделе, и я не мог решить. Поэтому я решил сделать все с самого начала, чтобы просто протестировать навигацию обратно к первому просмотру. Kardeş aynı hatayı geçen hafta geliştirdiğim uygulamada aldım. Evelsi gün çalışan navigasyon birdsen bu hatayı vermeye başladı. Ne yaptıysam çözemedim. Бен де yedek alıp sildim bu iki ekranı yeniden yaptım. Bu gün yine çalışırken ген aynı hatayı almaya başladim. Проблема не bulamıyorum. - person Olcay Ertaş; 07.10.2013
comment
Можете ли вы загрузить весь проект? - person mialkan; 08.10.2013