Это правда, что NSZombies может вызвать сбой?
Я читал здесь, что NSZombies с включенной ARC может вызвать сбой, и я также читал, что это не может быть причиной сбоя. Люди говорят, что это может привести к сбою из-за ошибки, при которой Deloc не вызывается для объекта. Это правда, и это все еще так? Я понимаю, что это может привести к сбою при нехватке памяти, но разве это единственный случай, когда сбой может быть вызван включением зомби?
Пост, на который я смотрю, - это сбой приложения NSZombie при включении на iPhone.
2 ответа
Не понятно, о чем вы спрашиваете.
Под NSZombies вы подразумеваете установку флага NSZombies на true в вашем проекте? Да, это приведет к тому, что память вашей программы будет расти вечно, и в конечном итоге вам не хватит памяти и произойдет сбой. (Когда включены зомби, вместо освобождения объектов в dealloc среда выполнения помечает их как зомби и оставляет их память занятой.)
Если вы имеете в виду наличие зомби в вашей программе (объекты, которые освобождаются, но ваш код пытается отправлять им сообщения), то да, это может и часто приводит к сбоям. Зомби менее распространены при ARC, но все еще возможны.
Настройка NSZombieEnabled
не вызывает сбой сам по себе.
Конечно, некоторая скрытая ошибка в вашем приложении может проявиться как побочный эффект изменений в использовании памяти.
Люди говорят, что это может привести к сбою из-за ошибки, при которой Deloc не вызывается для объекта.
Это не относится к делу. Включение обнаружения зомби не мешает dealloc
от вызова.