Код на ваш вопрос, вероятно, написан кем-то, кто не знает о FreeAndNil
. Или, возможно, это было первоначально написано до того, как FreeAndNil
был добавлен в RTL. Если вы хотите использовать ссылку, то вы можете использовать FreeAndNil
. Записывать его из рук в руки не помогает.
Единственная реальная разница заключается в том, что FreeAndNil
установит ссылку на Nil
, даже если Free
поднимает. Но ваши деструкторы никогда не должны подниматься, так что это не такая уж большая сделка на мой взгляд.
Существует общая ловушка с FreeAndNil
. Поскольку он принимает нетипизированный параметр, вы можете передать ему что угодно. Например, вы можете передать интерфейс, запись и т. Д. Если вы сделаете эту ошибку, вы обычно получаете странные ошибки времени выполнения.
Я не собираюсь начинать, подходит ли или нет FreeAndNil
. Эта тема была освещена в какой-то степени в другом месте.
Возможный дубликат [Что предпочтительнее: Free или FreeAndNil?] (Http://stackoverflow.com/questions/3159376/which-is-preferable-free-or-freeandnil) –
Я вижу, что есть отдельный SO обсуждение уже по этой теме. Таким образом, я думаю, что лучше, если он будет закрыт. – CyprUS
Ну, это зависит от того, что этот вопрос. Я прочитал это как разницу между FreeAndNil и двумя строками кода в этом вопросе. Если это верно, это не обман. Какой у Вас вопрос? –