Это правда, что NSZombies может вызвать сбой?

Я читал здесь, что NSZombies с включенной ARC может вызвать сбой, и я также читал, что это не может быть причиной сбоя. Люди говорят, что это может привести к сбою из-за ошибки, при которой Deloc не вызывается для объекта. Это правда, и это все еще так? Я понимаю, что это может привести к сбою при нехватке памяти, но разве это единственный случай, когда сбой может быть вызван включением зомби?

Пост, на который я смотрю, - это сбой приложения NSZombie при включении на iPhone.

2 ответа

Не понятно, о чем вы спрашиваете.

Под NSZombies вы подразумеваете установку флага NSZombies на true в вашем проекте? Да, это приведет к тому, что память вашей программы будет расти вечно, и в конечном итоге вам не хватит памяти и произойдет сбой. (Когда включены зомби, вместо освобождения объектов в dealloc среда выполнения помечает их как зомби и оставляет их память занятой.)

Если вы имеете в виду наличие зомби в вашей программе (объекты, которые освобождаются, но ваш код пытается отправлять им сообщения), то да, это может и часто приводит к сбоям. Зомби менее распространены при ARC, но все еще возможны.

Настройка NSZombieEnabled не вызывает сбой сам по себе.

Конечно, некоторая скрытая ошибка в вашем приложении может проявиться как побочный эффект изменений в использовании памяти.

Люди говорят, что это может привести к сбою из-за ошибки, при которой Deloc не вызывается для объекта.

Это не относится к делу. Включение обнаружения зомби не мешает dealloc от вызова.

Другие вопросы по тегам