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;
때때로 "MyObject"는 내부적으로 생성되지 않고 외부에서 만들어져 매개 변수에 할당됩니다. 이 개체가 외부에서 만들어진 경우이 컨텍스트에서이 개체를 해제 할 수 없습니다.은 객체 필드 유형 수명주기를 제어하는 가장 좋은 방법입니까?
내부적으로 생성 된 모든 객체에서 TList 및 Add를 생성하고 소멸자의 모든 것을 파괴해야합니까?
매개 변수가 내부적으로 생성되었거나 생성되지 않은 경우 어떻게 매개 변수의 수명을 제어 할 수 있습니까? 무엇을 제안 하시겠습니까? 이것을 할 수있는 패턴이 있습니까?
개인 액세스 수정자가 있으면 외부에서 MyObject를 어떻게 만들 수 있습니까? 아무 것도이 클래스가이 속성을 보지 못함 – heximal
@heximal : 생성자 삽입에 의해 (예제 코드에는 없음) 가장 가능성이 큼. – jpfollenius
@heximal :이 필드는 private이며 속성은 public이고 읽기/쓰기가 가능합니다. 즉 Obj.MyObject : = TSomeObject.Create;와 같이 사용할 수 있습니다. – ain