Bri*_*awk 3 delphi memory-management object
有没有办法从一个自己的方法中安全地释放一个对象?(我不需要nil对象变量)
var
Msg: TAMessage;
begin
Msg := TAMessage.Create();
Msg.ProcessAndDone;
end;
Run Code Online (Sandbox Code Playgroud)
我想要TAMessage.ProcessAndDone()
方法来破坏对象本身(在上面的例子中Msg
),因为我在调用ProcessAndDone
方法后不需要对象,我不想打电话Free
或Destroy
每次打电话后ProcessAndDone
(为了代码清晰) .
我知道设置一个TThread的FreeOnTerminate
属性可以做到这一点,但实际的释放过程由一个名为ThreadProc的包装器处理,该包装器调用了线程Execute
.
如果最后的行为ProcessAndDone
是打电话Destroy
,或者Free
,那么它就没事了.如果ProcessAndDone
调用方法,或引用成员,在它被销毁之后,那就没有用了.当然,你需要放入一个try/finally
内部ProcessAndDone
以确保破坏发生.
但所有这一切,你不应该这样做.为了清晰起见,存在模式,并且为了其他读者的利益.每当我们看到
obj := TMyObject.Create;
Run Code Online (Sandbox Code Playgroud)
我们也希望能看到一个try/finally
块来打电话Free
.不要违背粮食.
归档时间: |
|
查看次数: |
617 次 |
最近记录: |