2010-08-16 9 views

ответ

5

Это означает, что вы пытаетесь использовать объект, который был освобождаться - т.е. послал release или removeFromSuperview:

Проверьте this page, чтобы увидеть, как включить функцию отладки под названием NSZombie - он держит объекты в живых даже после освобождения, и позволяет вы знаете, к какой из них вы обращаетесь. Недостатком является то, что программа использует гораздо больше памяти (так как ничего действительно не выпущено), но вы используете ее только до тех пор, пока не найдете проблему, а затем отключите ее.

+0

Есть ли какой-либо способ, которым я могу сказать, какой именно объект? 0x4b9e720 – Fasid

+0

NSZombie уже включен. – Fasid

+1

Итак, какова строка, на которую вы отправляете сообщение? CFString сужает его немного. У вас нет трассировки стека? –

3

Adam is right. Но вы также должны включить MallocStackLogging.

Давайте предположим, что у вас есть этот выход:

2003-03-18 13:01:38.644 yourApp[**<pid>**] *** *** Selector 'release' 
sent to dealloced instance **<address>** of class NSConcreteData. 

введите следующую команду в БГД (своп и с вашими ценностями):

malloc_history <pid> <address> 

Это покажет вам, где и что было выделено.

+0

говорит, что запись в стек отключена из-за предыдущих ошибок, когда я попробовал это – Fasid

0

Запустите его в отладчике и посмотрите на трассировку стека.

+1

Святая корова! Бьюсь об заклад, он никогда об этом не думал! –

+0

Отсутствие трассировки стека предполагает, что он этого не сделал. –

Смежные вопросы