Как отладить странные проблемы управления памятью в Xcode / Objective-C? - PullRequest
1 голос
/ 19 июня 2010

Я новичок в Objective-C, и мои навыки управления памятью невелики.Однако до сих пор у меня не было ни одной проблемы.И теперь у меня большие проблемы.

Я прошел путь от нулевых сбоев до аварийных сбоев в случайных точках, не давая мне ни вывода на консоль, ни нераспознанных ошибок селектора на случайных типах (-[NSCFSet isSameAsStop:]: unrecognized selector - я недаже использовать любые наборы, и я, конечно, не вызывал свой пользовательский isSameAsStop ни на каких наборах.).Судя по случайности и ошибкам, мне кажется, что это память, хотя я не совсем уверен.

Как мне отладить это?Отладчик предполагает, что вы знаете , где ваша проблема ... а моя - везде.Идеи?

КОММЕНТАРИЙ РЕШЕНИЯ

Некоторые пояснения к предложению решения "работать с включенным обнаружением зомби":

  • Установите NSZombieEnabled наДА на экране «Аргументы исполняемых файлов».
  • Постройте, а затем выберите «Выполнить с помощью Performance Tool»> «Распределение объектов», чтобы запустить инструменты.
  • Нажмите кнопку «i» на «Распределении объектов» в Instr.и выберите обнаружение зомби и сохраните счет.
  • Перезапустите приложение и кликните по нему, оно сообщит вам, когда вы попали в зомби!

Спасибо за помощь!

Ответы [ 2 ]

6 голосов
/ 19 июня 2010

У вас в руках классический баг-релиз. Где-то вы перевыпускаете экземпляр класса, который реализует isSameAsStop, и просто так получается, что экземпляр NSSet размещается в том же месте после освобождения исходного экземпляра.

Первым шагом является «сборка и анализ» вашего кода, устранение проблем, обнаруженных статическим анализатором.

Следующим шагом будет запуск с включенным обнаружением зомби.

0 голосов
/ 19 июня 2010

В Xcode: Меню сборки >> Построить и проанализировать

Находит много общих проблем с управлением памятью.

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