Управление памятью в графическом интерфейсе - PullRequest
2 голосов
/ 19 марта 2011

Главное, что мне интересно, скажем, действие кнопки заставляет себя удалить себя. Под этим я подразумеваю, что слушатель действия был добавлен к кнопке, и это событие действия хотело бы, чтобы кнопка была уничтожена при ее вызове. Но он не может просто вызвать удаление, ему нужно как-то пометить его для удаления, и когда кнопка завершит свое событие, она будет удалена.

Для меня здесь есть две основные проблемы: поскольку мой графический интерфейс полиморфен, указатель мог прийти с фабрики в DLL. Кроме того, даже если я добавил кнопку в очередь на удаление, когда эта очередь должна быть снята с очереди? Должен ли я просто проверять очередь каждый раз, когда моя игра получает обновление ()?

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

Спасибо

1 Ответ

3 голосов
/ 19 марта 2011

Обычно в графическом интерфейсе имеется цикл обработки сообщений для асинхронных входных сообщений.Предполагая, что у вас есть такая вещь, нормальный подход - отправить сообщение в эту очередь, что приведет к удалению элемента управления.Поскольку очередь сообщений перекачивается после завершения обработчика событий, у вас нет проблем.

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