TMyClass = class(TObject)
private
FMyObject: TObject;
function GetMyObject: TObject;
public
property MyObject: TObject read GetMyObject write FMyObject;
end;
function TMyClass.GetMyObject: TObject;
begin
if FMyObject = nil then
FMyObject := TObject.Create;
Result := FMyObject;
end;
Đôi khi, "MyObject" không được tạo bên trong mà được tạo ra bên ngoài và gán cho tham số. Nếu đối tượng này được tạo ra bên ngoài, tôi không thể giải phóng nó trong ngữ cảnh này.là cách tốt nhất để kiểm soát vòng đời loại đối tượng kiểu trường?
Tôi có nên tạo TList và Thêm vào tất cả các đối tượng đã được tạo bên trong và phá hủy mọi thứ trên trình phá hủy không?
Làm cách nào để kiểm soát tuổi thọ của tham số nếu nó được tạo nội bộ hay không? Những gì bạn đề nghị để làm gì? Có mô hình nào để làm điều này không?
làm thế nào MyObject có thể được tạo ra bên ngoài nếu nó có công cụ sửa đổi truy cập riêng? không có gì expept lớp này nhìn thấy tài sản này – heximal
@heximal: Rất có thể (không phải trong mã ví dụ) bằng cách xây dựng tiêm. – jpfollenius
@heximal: Trường là riêng tư, thuộc tính là công khai và đọc/ghi, tức là nó có thể được sử dụng như 'Obj.MyObject: = TSomeObject.Create;'. – ain