В Free Pascal тип интерфейса зависит от режима. В основном это режим COM или CORBA . COM по умолчанию и примерно совместим с Delphi. CORBA - более простой случай без подсчета ссылок. (и, следовательно, также не генерирует вызовы для пересчета функций). Таким образом, интерфейс FPC Corba похож на гипотетического предка интерфейса IUnknown.
Помимо этого, иногда существуют некоторые различия в отношении выпуска интерфейсов. Delphi имеет тенденцию экономить, уменьшая значение refcount в конце процедуры или блока (в более крупных процедурах), в то время как известно, что FPC иногда освобождает их раньше, обычно сразу после заявления о последнем использовании. Оба варианта являются допустимыми вариантами реализации, основанными на том, какая область используется для временных переменных. (только на уровне функций или также в более глубоких вложенных блоках)
Однако это иногда выявляет скрытые (плохие) предположения в коде, особенно при использовании ссылок на интерфейсы и ссылок на объекты в рамках одной процедуры, которая может «выжить» в Delphi, но не в FPC. Это типичный случай, который показывает, что длительно работающий код не обязательно корректен. При изменении реализации можно заметить только скрытые предположения
(добавлено позже :) обратите внимание, что вы можете использовать стиль COM в * nix. В основном это вставка вызовов в подпрограммы подсчета ссылок, которые разделяют два типа интерфейса. Не на какую систему (COM, Corba или просто в подсчете ссылок RTL) эти вызовы направляются.
Обратите внимание, что я думаю, что имена COM и Corba для обоих типов интерфейсов были выбраны неправильно. Интерфейсы Corba фактически пересчитаны, но традиционно этот пересчет обрабатывается вручную, поскольку Java не поддерживает интерфейсы с внешней обработкой в автоматическом режиме.