Modifier
سه شنبه 06 مهر 1389, 08:49 صبح
سلام
من داشتم یه نمونه کد در مورد الگوی Singleton مطالعه میکردم...
توی اون 2 نوع کد دیدم که برای تخریب اشیاء استفاده میشه...
procedure FreeGlobalObjects; far;
begin
if Global_CSingleton <> nil then
Global_CSingleton.Free;
if Global_OSingleton <> nil then
Global_OSingleton.Free;
end;
destructor TCSingleton.Destroy;
begin
if Global_CSingleton = Self then
Global_CSingleton := nil;
inherited Destroy;
end;
destructor TOSingleton.Destroy;
begin
if Global_OSingleton = Self then
Global_OSingleton := nil;
inherited Destroy;
end;
یک جا Object رو nil کرده...و جایی دیگر free...
سوالم اینه که چرا 2 جا ... ؟
در ضمن به کد زیر هم توجه کنید ...
begin
AddExitProc(FreeGlobalObjects);
end.
من داشتم یه نمونه کد در مورد الگوی Singleton مطالعه میکردم...
توی اون 2 نوع کد دیدم که برای تخریب اشیاء استفاده میشه...
procedure FreeGlobalObjects; far;
begin
if Global_CSingleton <> nil then
Global_CSingleton.Free;
if Global_OSingleton <> nil then
Global_OSingleton.Free;
end;
destructor TCSingleton.Destroy;
begin
if Global_CSingleton = Self then
Global_CSingleton := nil;
inherited Destroy;
end;
destructor TOSingleton.Destroy;
begin
if Global_OSingleton = Self then
Global_OSingleton := nil;
inherited Destroy;
end;
یک جا Object رو nil کرده...و جایی دیگر free...
سوالم اینه که چرا 2 جا ... ؟
در ضمن به کد زیر هم توجه کنید ...
begin
AddExitProc(FreeGlobalObjects);
end.