Освобождение объекта, который не размещен без ошибок - PullRequest
1 голос
/ 21 ноября 2011

Я обнаружил, что в своем коде я освобождаю объект, который никогда не выделялся, и я не получаю никакой ошибки.Приложение не падает.Все работает.Я использую Product -> Analyse, и он говорит мне, что все в порядке.

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

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Все зависит от того, является ли указатель на «нераспределенный» объект nil. В Objective-C сообщение, отправленное на nil, ничего не делает. Сбой приложения вызван отправкой сообщения на висящий указатель (или указатель мусора и т. Д.).

1 голос
/ 21 ноября 2011

Если вы не выделили память для вашего объекта, ваш объект указывает на ноль. Когда вы звоните

[myobj release]

Вы действительно отправляете сообщение для освобождения объекту nil. Obj-C ничего не делает в этом случае, и именно поэтому ваше приложение не падает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...