zoukankan      html  css  js  c++  java
  • FMX对象释放

    今天盒子中有朋友遇到对象释放的问题,原文在这里,他的实现大意是建立一个TmyLayout = class(TLayout),然后在这个类中画线,Form对象调用实例化这个类来画线,然后释放掉这个对象,问题就出在释放。我们看一下他建立这个对象与释放的代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var i: Integer;
    begin
         ly := TmyLayout.Create(Self);
         ly.Parent := Form1; // Self;

         for I := 0 to 9 do
         begin
              ly.DrawLine(PointF(0, 0   i * 10));
         end;
    end;
    这里,ly他声明为全局对象。
    procedure TForm1.Button2Click(Sender: TObject);
    begin
         ly.Parent := Nil;
         ly.Destroy;
    end;
    这是他释放ly对象的代码,注意,他用了Destory方法。正是这种方法,当在android及ios下运行时,不能正常执行。
    回想在xe5/6时,关于Form对象的释放,记得就用DisposeOf方法。于是做了如下的测试:

    把ly.Destory改成ly.DisposeOf,循环建立与释放对象ly10000次,内存占用正常,改成FreeAndNil(ly),内存占用不正常,达到900多MB,这说明,FreeAndNil不能正确释放内存。

    好了,现在结论:用fmx做跨平台应用,用DisposeOf来释放对象。

    实际上,XE7的时候就写过关于DisposeOf的文字,你可以去看看.

    http://blog.sina.com.cn/s/blog_44fa172f0102vyw9.html

  • 相关阅读:
    网页特殊符号HTML代码大全
    检测手机类型正则表达式
    blur和focus的运用
    腾讯对外分享组件接口文档
    js 类型检测
    iconfont的应用
    运算符优先级 (JavaScript)
    IOC(控制反转)和DI(依赖注入)
    Mybatis的运行原理
    通用Mapper
  • 原文地址:https://www.cnblogs.com/findumars/p/5405140.html
Copyright © 2011-2022 走看看