![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Стиль: саморазрушение
Igorek © (2002-10-30 20:22:00)Сегодня был такой случай: уничтожается обьект, метод которого в стеке вызовов процедур. Естественно, если после уничтожения мы в этом методе обратились бы к каким-либо полям данного (уже уничтоженного) обьекта - получили бы AccessViolation. К счастью мы этого не сделали и все нормально работает. Но не является ли такой подход признаком плохого стиля?
Andryk (2002-10-30 22:35:00) [41]Как раз здесь Юрий Зотов прав.
Ну например посмотрите как уничтожается форма по событию OnClose. Попробуйте внутри обработчика вызвать Free и AccessViolation вам гарантирован, именно поэтому там есть параметр Action если его вернуть со значением caFree, форма уничтожится самой VCL когда "закончится" стек вызовов.
down (2002-10-30 22:14:00) [42]>В подобной ситуации я использовал отложенное уничтожение -
>посылкой форме сообщения через PostMessage
по моему скромному мнению, это есть как раз плохой стиль - нужно связывать объект с формой, да и навороченно слишком... "keep it simple, stupid!" :)
Юрий Зотов (2002-10-30 21:52:00) [43]В подобной ситуации я использовал отложенное уничтожение - посылкой форме сообщения через PostMessage. То есть, сначала завершается вызов метода объекта, а потом он уничтожается извне.
Думаю, так лучше. И не мешает обращаться к полям.
down (2002-10-30 21:02:00) [44]хотя, вообще-то, при использовании подсчета ссылок это есть нормально...
вообще, обращаться к полям оьъекта после вызова destroy - это несколько ошибочно, какая разница - из метода он вызывается или нет
down (2002-10-30 20:58:00) [45]то есть Destroy вызвается из метода объекта? по-моему это не есть нормально