В порядке ли передача аргумента NULL-владельца для динамически создаваемых экземпляров производных классов TComponent?

Я немного работаю с C++ RAD Studio и Builder 6 и часто динамически создаю формы или динамически создаю невизуальные компоненты при написании невизуального кода. При проектировании форм свойство Owner компонентов, перетаскиваемых на эту форму, устанавливается автоматически, поэтому я никогда не беспокоился об этом. Однако при создании чего-либо полученного из TComponent динамически я всегда прохожу NULL как Owner аргумент, как я всегда беру на себя ответственность за освобождение памяти позже.

Документация Borland/Embarcadero на самом деле не охватывает то, что требуется в случае динамического создания вещей (или, может быть, я не искал в нужных местах), а только кажется, что когда-либо охватывает сценарии, основанные на времени разработки.

Я хотел бы знать, является ли правильной передача владельца NULL для динамически создаваемых компонентов или это может привести к внутренним проблемам, которые проявятся позже. Код компилируется и работает нормально, но мне интересно, является ли он причиной или потенциально вызывает какие-либо проблемы за кадром.

1 ответ

Решение

Это, конечно, не неправильно.

Передача владельца, как вы уже намекнули, избавляет вас от необходимости самостоятельно управлять временем жизни объекта. Там нет скрытых внутренних побочных эффектов, которые требуют от вас передать владельца.

FWIW: Создание / использование и уничтожение компонентов, не являющихся владельцами, не редкость, мы делаем это постоянно.


Редактировать Cudo в Реми

Хотя компоненты, поставляемые с вашей установкой, можно использовать без владельца (кроме некоторых угловых случаев, таких как TXMLDocument, которые действуют по-разному при назначении владельца), всегда есть возможность использования стороннего или домашнего компонента, который полагается на назначенного владельца.,

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