Buona giornata! Funzione GetService crea un'istanza della classe THTTPRIO e la restituisce come IInvokable. Io uso questa interfaccia/oggetto in un'altra funzione. Devo liberarlo o no quando non ne ho più bisogno? Non è necessario liberare le interfacce, ma sono confuso dal fatto che RIO sia stato creato come oggetto della classe THTTPRIO.È un oggetto o un'interfaccia? Devo liberarlo o no?
function GetService(Addr: string): IInvokable;
var
RIO: THTTPRIO;
begin
RIO := THTTPRIO.Create(nil)
RIO.URL := Addr;
Result := (RIO as IInvokable);
end;
Dove:
IInvokable = interface(IInterface);
THTTPRIO = class(TComponent, IInterface, IRIOAccess);
Grazie in anticipo! Vojtech
+1 Di solito faccio attenzione a separare l'utilizzo dell'interfaccia con l'utilizzo dell'oggetto. Grazie per le informazioni. Quindi, se aggiungiamo dopo Risultato: = (RIO come IInvokable); due nuove righe Risultato: = nil; Showmessage (Rio.URL) causerà un AV, giusto? – Justmade
@Justmade Sì, penso che AV –
No, non necessariamente. È possibile che l'oggetto sia ancora in grado di funzionare più o meno. Si ottiene un AV solo se la chiamata all'URL fa riferimento a un puntatore NIL (oa un valore di puntatore diverso che causa anche un AV) – dummzeuch