2009-10-26 2 views
0

Я получаю EXC_BAD_ACCESS, когда я представляю другой контроллер в режиме Modal. По-видимому, когда я перехожу к viewDidLoad этого контроллера, некоторые переменные являются «недопустимыми». Однако, если я жду, как 20 секунд, тогда контроллер будет нормально заряжаться.В ожидании управления памятью в iPhone

Я новичок в iPhone. Извините за вопрос новичков.

+0

Когда вы говорите, что вы «получаете» к viewDidLoad контроллера, вы имеете в виду, что метод вызывается приложением автоматически или вы вызываете его явно? Какой объект имеет EXC_BAD_ACCESS? Некоторый код был бы полезен. – TechZen

+0

Привет - Я попытался использовать глобальную переменную NSString в контроллере Root. Я создал/установил другой контроллер под названием View внутри Root.m. Я присваиваю значение NSString внутри Root, присутствует View, а затем пытаюсь получить доступ к NSString, когда View load в viewDidLoad. Я установил контрольные точки, чтобы проверить значение NSString, прежде чем покинуть Root и когда я войду в View. Иногда он имеет такое же значение, иногда говорит Invalid. Еще в следующем комментарии ... – YVR1985

+0

Думаю, я решил это, переместив всю свою обработку на View. Похоже, что NSString может выйти из-под пределов, заполнившись слишком большим количеством. Вы столкнулись с этим? Кроме того, я заметил, что на симуляторе и на устройстве результаты также противоречивы. Спасибо за любой вклад. – YVR1985

ответ

0

я написал блог о некоторых методах для отслеживания этого вниз:

http://loufranco.com/blog/files/debugging-memory-iphone.html

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

0

Часто EXC_BAD_ACCESS можно отследить, просто запустив отладчик. Не устанавливайте точки останова, просто запускайте в debug (Command-Y) и делайте то, что обычно делаете, чтобы вызвать сбой приложения. Отладчик остановится в месте в коде, где происходит сбой. Затем вы можете посмотреть список тем в отладчике (вид в верхнем левом углу) и увидеть последнюю строку вашего кода, которая была действительной. Строки с серым шрифтом - это строки из внутреннего кода. Строки в полном черном шрифте - ваш код. Нажмите на последнюю (верхнюю часть в стеке) ваших строк кода, и вы увидите, где она не работает. Затем вы можете навести указатель мыши на переменные в этой строке, чтобы найти тот, который не был инициализирован. Это должно дать вам и понять, что происходит.

+0

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

+0

Я видел несоответствия между ними до себя, но вам нужно будет уточнить, какие несоответствия вы видите конкретно. –

+0

Привет Мэтт - например, приложение не будет иметь проблемы с проблемой NSString в симуляторе, как на реальном телефоне. У меня есть приложение, которое отслеживает результаты, и в симуляторе я могу ввести полные данные, которые я запрашиваю, - заполните 5 массивов, около 10 переменных, а затем сохраните их в Core Data. Никакой проблемы с симулятором, но останавливается, прежде чем я получу половину пути с помощью реального устройства. Wierd. Я собираюсь попробовать ваше предложение, чтобы оба снова увидели, где вина. В конце дня я написал его, чтобы я мог понять это. :-) – YVR1985