Giả sử lớp Delphi của tôi trông như thế này:Làm thế nào tôi có thể giải phóng một mảng các đối tượng trong một destructor Delphi 7?
interface
type
TMySubInfo = class
public
Name : string;
Date : TDateTime;
Age : Integer;
end;
TMyInfo = class
public
Name : string;
SubInfo : array of TMySubInfo;
destructor Destroy; override;
end;
implementation
destructor TMyInfo.Destroy;
begin
// hmmm..
end;
end.
Để đúng cách dọn dẹp, những gì nên đi trong destructor? Có đủ để làm SetLength(SubInfo,0)
hoặc tôi có cần lặp lại và miễn phí cho mỗi TMySubInfo
không? Tôi có cần làm gì không?
Đúng, tôi đang gọi TMySubInfo.Create trong một vòng lặp để tạo chúng. Tuy nhiên, khi đã tạo, tôi không cần thêm hoặc xóa bất kỳ thứ gì - đó là lý do tại sao tôi chọn một mảng đơn giản. – Blorgbeard
Ngoài ra, giả sử rằng tôi giải phóng chúng trong một vòng lặp, tôi có cần SetLength (0) không, sau đó? – Blorgbeard
Không cần phải gọi SetLength. Mảng động được tự động làm sạch lên một khi có số tham chiếu đi đến 0. –