Chúc ngày vui vẻ! Hàm GetService tạo ra cá thể của lớp THTTPRIO và trả về nó là IInvokable. Tôi sử dụng giao diện/đối tượng này trong một hàm khác. Tôi có phải giải phóng nó hay không khi tôi không cần nó nữa? Giao diện không cần phải được giải phóng nhưng tôi nhầm lẫn với thực tế là RIO được tạo ra như là đối tượng của lớp THTTPRIO.Đây có phải là một đối tượng hoặc một giao diện không? Tôi có cần phải giải phóng nó hay không?
function GetService(Addr: string): IInvokable;
var
RIO: THTTPRIO;
begin
RIO := THTTPRIO.Create(nil)
RIO.URL := Addr;
Result := (RIO as IInvokable);
end;
đâu:
IInvokable = interface(IInterface);
THTTPRIO = class(TComponent, IInterface, IRIOAccess);
Cảm ơn bạn trước! Vojtech
+1 Tôi thường cẩn thận tách riêng việc sử dụng giao diện với việc sử dụng đối tượng. Cảm ơn bạn về thông tin. Vì vậy, nếu chúng ta thêm sau khi kết quả: = (RIO như IInvokable); hai dòng mới Kết quả: = nil; Showmessage (Rio.URL) nó sẽ gây ra một AV, phải không? – Justmade
@Justmade Yes Tôi nghĩ rằng AV –
Không, không nhất thiết. Có thể, rằng đối tượng vẫn có thể hoạt động nhiều hơn hoặc ít hơn. Bạn chỉ nhận được AV nếu lệnh gọi URL tham chiếu đến con trỏ NIL (hoặc giá trị con trỏ khác cũng gây ra AV) – dummzeuch