Добрый день! Функция GetService создает экземпляр класса THTTPRIO и возвращает его как IInvokable. Я использую этот интерфейс/объект в другой функции. Должен ли я освобождать его или нет, когда он мне больше не нужен? Интерфейсы не нужно освобождать, но я смущен тем, что RIO создается как объект класса THTTPRIO.Является ли это объектом или интерфейсом? Нужно ли мне это бесплатно или нет?
function GetService(Addr: string): IInvokable;
var
RIO: THTTPRIO;
begin
RIO := THTTPRIO.Create(nil)
RIO.URL := Addr;
Result := (RIO as IInvokable);
end;
Где:
IInvokable = interface(IInterface);
THTTPRIO = class(TComponent, IInterface, IRIOAccess);
Спасибо заранее! Vojtech
+1 Обычно я стараюсь разделить использование интерфейса с использованием объекта. Спасибо за информацию. Поэтому, если добавить после результата: = (RIO as IInvokable); две новые строки Результат: = nil; Showmessage (Rio.URL), это вызовет AV, верно? – Justmade
@Justmade Да, я думаю, будет AV –
Нет, не обязательно. Возможно, что объект все еще может функционировать более или менее. Вы получаете AV, только если вызов на URL ссылается на указатель NIL (или другое значение указателя, которое также вызывает AV) – dummzeuch