おやすみ!関数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私は通常、オブジェクトの使用法とインターフェイスの使い分けを区別しています。情報をありがとう。だから我々は後に追加結果:=(IInvokableとしてRIO); 2つの新しい行結果:= nil; Showmessage(Rio.URL)AVを引き起こすでしょうか? – Justmade
@ジャストメイドはい私はAVと思うだろう –
いいえ、必ずしもそうではありません。オブジェクトはまだ多かれ少なかれ機能することが可能です。 URLへの呼び出しがNILポインタ(またはAVを引き起こす別のポインタ値)を参照する場合にのみ、AVを取得します。 – dummzeuch