-[CFString respondsToSelector:]: message sent to deallocated instance 0x4b9e720
Мне не с чего начать, попробовал статический анализатор и прошел через каждую строку кода, но по-прежнему не помогал.Как бы вы отлаживали эту ошибку iphone
-[CFString respondsToSelector:]: message sent to deallocated instance 0x4b9e720
Мне не с чего начать, попробовал статический анализатор и прошел через каждую строку кода, но по-прежнему не помогал.Как бы вы отлаживали эту ошибку iphone
Это означает, что вы пытаетесь использовать объект, который был освобождаться - т.е. послал release
или removeFromSuperview:
Проверьте this page, чтобы увидеть, как включить функцию отладки под названием NSZombie - он держит объекты в живых даже после освобождения, и позволяет вы знаете, к какой из них вы обращаетесь. Недостатком является то, что программа использует гораздо больше памяти (так как ничего действительно не выпущено), но вы используете ее только до тех пор, пока не найдете проблему, а затем отключите ее.
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>
Это покажет вам, где и что было выделено.
говорит, что запись в стек отключена из-за предыдущих ошибок, когда я попробовал это – Fasid
Запустите его в отладчике и посмотрите на трассировку стека.
Святая корова! Бьюсь об заклад, он никогда об этом не думал! –
Отсутствие трассировки стека предполагает, что он этого не сделал. –
Есть ли какой-либо способ, которым я могу сказать, какой именно объект? 0x4b9e720 – Fasid
NSZombie уже включен. – Fasid
Итак, какова строка, на которую вы отправляете сообщение? CFString сужает его немного. У вас нет трассировки стека? –