我刚刚在help中看到form的release方法时,发现他提示要尽量用release方法,而不用free或destroy,而且说如果用free或destroy可能导致access violation.所以我想问问高手这三者究竟有什么区别?如果用release的话,他 的触发事件是不是应该是onrelease事件,如果是free或destroy的话,是否是ondestroy事件。还有,用一些方法的时候,在drived from 。。中,是否要尽量用越近的祖先类中的越好?还有能否就帮助中mothod中的drived from 。。具体讲解一下。谢谢!

解决方案 »

  1.   

    只有TCustomForm及其子类才有Release。Release和Free、Destroy的功能近似,唯一不同的是后两者立即销毁对象,而Release会等待Form将消息和事件处理完毕后再销毁Form。所以如果在Form的事件处理代码中通常使用Release而不是Free和Destroy。
    Release内部调用Free,Free内部调用Destroy。在我们的程序中,几乎从来不直接调用Detroy,因为Free会首先判断对象指针是否为nil,如果不是才调用Destroy。在对象指针为nil时调用Destroy将触发异常。所以在一般情况下,销毁对象都是调用Free或者另外一个全局过程FreeAndNil。
    因为它们三者最终都是调用Detroy,所以都触发OnDestroy事件。“是否要尽量用越近的祖先类中的越好”
    不是。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    同意 lxpbuaa(桂枝香在故国晚秋)