EXC_BAD_ACCESS после передачи данных - PullRequest
0 голосов
/ 29 января 2012

В настоящее время я работаю над приложением для iPad для управления самолетными парками.Я хочу прочитать данные из XML-файла, используя NSXMLParser, который создает экземпляры "Самолет", содержащие данные.NSXMLParser, а также NSXMLParserDelegate являются дочерними элементами приложения-делегата.Я использую Tab View Layout.Сам разбор работает просто отлично.NSMutableArray, содержащий объекты Aircraft, передается в контроллеры представления вкладок.Проблема заключается в том, что из контроллеров представления вкладок невозможно получить доступ к свойствам объектов «Самолет», что приводит к предупреждению «EXC_BAD_ACCESS».Однако при доступе из класса App Delegate он работает просто отлично.Это определение свойства в классе делегата:

@property (copy, readonly) NSMutableArray* airplanes;

Оно передается в контроллер представления следующим образом:

fleetViewController.airplanes = delegate.airplanes;

Определение свойства в fleetViewController:

@property (copy, readwrite) NSMutableArray *airplanes;

И эта часть вызывает исключение:

registration = [[airplanes objectAtIndex:0] registration];

Как я уже говорил, когда тот же метод вызывается из делегата приложения, он работает без проблем.

Помощь очень ценится

1 Ответ

2 голосов
/ 29 января 2012

Если вы используете свойства, вы всегда должны устанавливать их значение с помощью нотации self.propertyName.Это гарантирует, что внутреннее управление памятью выполнено правильно.

Если у вас EXC_BAD_ACCESS, это означает, что вы обращаетесь к недопустимой памяти.Для решения таких проблем весьма полезно запустить ваше приложение в режиме профиля и проверить наличие «зомби»:

Мне кажется, эта альтернатива более удобна:

  1. Нажмите «Раскрыть кнопку« Выполнить »"
  2. Из списка выберите Profile
  3. Должна открыться программа" Инструменты ", где вы также можете выбрать Zombies
  4. Теперь вы можете взаимодействовать со своим приложением и попробоватьвызвать ошибку
  5. Как только ошибка произойдет, вы должны получить подсказку, когда ваш объект был освобожден и, следовательно, освобожден.

Зомби http://www.dimzzy.com/blog/wp-content/uploads/2011/02/leaky-zombies-tool.png

...