Я видел предложения, в которых говорилось, что нужно установить NSZombieEnabled
во true
время отладки. Что такое NSZombie? Это фреймворк? Настройка?
ios
iphone
objective-c
nszombie
Моше
источник
источник
Ответы:
Это средство отладки памяти. В частности, когда вы устанавливаете
NSZombieEnabled
then, всякий раз, когда объект достигает счетчика сохранения 0, вместо того, чтобы освобождаться, он трансформируется вNSZombie
экземпляр. Каждый раз, когда такой зомби получает сообщение, он регистрирует предупреждение, а не дает сбой или ведет себя непредсказуемым образом. Таким образом, вы можете отлаживать тонкие проблемы чрезмерного выпуска / автоматического выпуска без дополнительных инструментов или кропотливой иглы в поисках стога сена.Название является довольно очевидной игрой на том факте, что объекты обычно считаются «мертвыми», когда они достигают сохраненного счетчика 0. С этой настройкой они продолжают существовать в странном периоде полураспада - ни живые, ни совсем мертвые. Очень похоже на настоящих зомби, за исключением того, что они едят гораздо меньше мозгов.
источник
Адам отлично объяснил, что такое зомби, но использование переменной окружения - не лучший способ их найти и отследить.
Намного лучший подход к обнаружению зомби - просто использовать инструменты - в XCode начните с «Run with Instrument» и выберите «Allocations».
Затем остановите запись сразу после ее начала, нажмите кнопку «i» на инструменте распределения и включите «включить счетчик ссылок» и «включить обнаружение NSZombie». Теперь снова нажмите «Запись» в инструменте, и ваше приложение запустится - если будут отправлены какие-либо зомби-объекты, запись сообщений остановится, и на шкале времени записи появится диалоговое окно - вы можете щелкнуть по нему, чтобы найти каждое место, где находился объект. сохранены или освобождены.
Изменить: предыдущий совет был для XCode 3, вот дополнение для XCode 4:
В XCode 4.2 есть еще более простой механизм использования обнаружения зомби - инструмент зомби. Вместо «Выполнить» для запуска приложения используйте «Профиль», и появится селектор инструментов. Выберите «Zombie», и приложение запустится - делайте все, что вызывает сбой, появится диалоговое окно с надписью «Zombie Messaged».
Оттуда щелкните маленькую стрелку в диалоговом окне. Это приведет к списку всех случаев создания, сохранения или освобождения зомби-объекта. Потяните вверх боковую панель, и вы можете перейти к каждой записи, глядя на трассировку стека для кода, который отвечал за каждую корректировку в счетчике удержания.
источник
Я согласен с тем, что добавил Кендалл, это очень полезно, но я предлагаю по-прежнему делать переменную среды, чтобы вы не забыли, что они включены. Подобно ссылке (срок действия которой истек) в Cocoa Dev, я поместил это, чтобы не пропустить:
Это очень хорошо привлекает мое внимание.
источник
Помогло бы кому-нибудь.
Подробный документ по приборам. https://developer.apple.com/library/watchos/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/index.html#//apple_ref/doc/uid/TP40004652-CH3-SW1
источник