Стратегии проектирования управления памятью Delphi: объект или интерфейс? - PullRequest
7 голосов
/ 31 марта 2010

Что касается управления памятью Delphi, каковы ваши стратегии проектирования?

  • В каких случаях вы предпочитаете создавать и выпускать объекты вручную?
  • В каких случаях используютсяИнтерфейсы, InterfacedObjects и их механизм подсчета ссылок предпочтительнее?

Вы определили некоторые ловушки или трудности с объектами подсчета ссылок?

Спасибо, что поделились здесь своим опытом.*

Ответы [ 2 ]

7 голосов
/ 31 марта 2010

Всякий раз, когда вы разделяете объекты между потоками, лучше использовать интерфейсы. Разделяемый объект не обязательно имеет одного идентифицируемого владельца, поэтому естественным образом подходит поток, который отказывается от последней ссылки на интерфейс, реализующий объект. См. OmniThreadLibrary для хорошего примера того, как использовать интерфейсы как для проектирования, так и для преодоления некоторых сложных проблем владения в многопоточном коде.

1 голос
/ 31 марта 2010

Вы всегда должны предпочитать интерфейсы, если это невозможно из-за ограничений VCL. Я подозреваю, что если бы интерфейсы были доступны в Delphi 1.0, VCL был бы совсем другим.

Одно незначительное соображение - следить за референтными циклами. Если A содержит интерфейс с B, а B содержит интерфейс с A, они оба будут жить вечно.

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