最近我遇到了一个困境。
考虑以下示例:
unit Unit2;
interface
uses
Classes;
type
TMyObject = class(TObject)
private
FDataStream: TMemoryStream;
procedure SetDataStream(const Value: TMemoryStream);
public
property DataStream: TMemoryStream read FDataStream write SetDataStream;
constructor Create(ADataStream: TMemoryStream);
destructor Destroy;
end;
implementation
{ TMyObject }
constructor TMyObject.Create(ADataStream: TMemoryStream);
begin
FDataStream := ADataStream;
end;
destructor TMyObject.Destroy;
begin
//Should MyObject free FDataStream?
end;
procedure TMyObject.SetDataStream(const Value: TMemoryStream);
begin
FDataStream := Value;
end;
end.
正如您所见,TMyObject可以拥有TMemoryStream的实例。现在,我想知道当TMyobject被释放时,它应该怎么做?它也应该释放FDataStram吗?还是应该保持不变?
对于这种情况是否有任何指导方针呢?
谢谢。