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
FMX对象释放的更多相关文章
- ios 在ios9中 NSNotificationCenter addObserver 不会影响对象释放
如题,ios9上, [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@&qu ...
- GDI+ 对象释放崩溃的问题
确保在Gdiplus::GdiplusShutdown(m_gdiplusToken); 之前delete 掉GDI+的对象,例如:delete *pBitmap; 如果先Gdiplus::Gdipl ...
- 巧用std::shared_ptr全局对象释放单例内存
巧用std::shared_ptr 单例的使用相对比较广泛,但是需要在程序退出前调用它的析构函数对数据进行释放,常规做法是在main函数末尾进行释放工作, 但是这样相对比较繁琐,因此便有了利用全局变量 ...
- ASP.NET Core :容器注入(二):生命周期作用域与对象释放
//瞬时生命周期 ServiceCollection services = new ServiceCollection(); services.AddTransient<TestServiceI ...
- 【读书笔记】iOS-ARC-不要向已经释放的对象发送消息
一,在AppDelegate.m中写入如下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- C#+ArcEngine中com对象的释放问题
1.问题描述 最近在写C#下AE的开发,在循环获取数据并修改时碰到了两个问题"超出系统资源"和"超出打开游标最大数":在网上看了一些资料,发现都是说在循环中没有 ...
- .net开发Ae释放com对象的问题
本文转载自: http://www.cnblogs.com/yhlx125/archive/2011/11/22/2258543.html#2269154我的博文 http://www.cnblogs ...
- php对象在内存中创建于释放
<?php /** * 1.对象的创建占用内存, * 对象内存释放,析构方法就是在对象释放前运行最后的一步.可以自动释放和手动释放 * 手动释放:通过unset($p);来释放对象,在这个时候会 ...
- 《精通C#》第十三章 对象的生命周期
在C#中,程序员无法直接在C#中删除一个托管对象,因为C#不提供这个功能,那么类的实例就需要通过CLR调用垃圾回收机制进行清除,回收内存..NET垃圾回收器会压缩空的内存块来实现优化,为了辅助这一功能 ...
随机推荐
- C# L该系统的应用istView简单的图像浏览器
最近有同学问我怎么用ListView加载图像列表,在...前面"C#系统中的应用"于TreeView+ListView+ContextMenuStrip控件实现树状图显示磁盘文件夹 ...
- Jquery ajax方法详解
1.url: 要求为string类型的参数,(默认为当前页面地址)发送请求的地址. 2.type: 要求为String类型的参数,请方式(get/post)默认为get.注意其他HTTP请求方法,例如 ...
- windows简单杀死进程的批处理程序
新建一个txt文档,命令为taskkill.bat,复制下面的命令保存 @echo offtaskkill /F /IM vm* /Ttaskkill /F /IM apple* /Ttaskkill ...
- HTML5新标签
<article>标签定义外部的内容.比如来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本.亦或是来自其他外部源内容. HTML5:<arti ...
- Raphael入门实例:绘图
raphael 实例 开始 创建画布参数说明 创建一个画布对象. 下面每个例子都会创建一个320*200大小的画布. ? 1 2 // 1.在视口的 (10,50) 坐标位置上创建画布 var pap ...
- jquery删除动态增加的li
<script type="text/jscript"> //楼主帮你修改调整了下 $(document).ready(function () { $('.zuo li ...
- CCIE路由实验(2) -- BGP选路原则
BGP路径属性分为4类: 公认必遵(Well-Known Mandatory):BGP更新报文中必须包含的,且必须被所有BGP厂商实现所能识别的,包括ORIGIN,AS-PATH和Next_Hop 1 ...
- uva 10271 Chopsticks(dp)
题目连接:10271 - Chopsticks 题目大意:给出m和n, 然后给出n根筷子从小到大给出, 现在要从这n根筷子中选出m + 8组筷子, 每组筷子包括三根, 现在要求所有m + 8组每组筷子 ...
- Nagiosserver端安装部署具体解释(1)
下载地址例如以下: http://sourceforge.net/projects/nagios/files/ 具体具体下载地址:http://prdownloads.sourceforge.net/ ...
- location.href使用方法总结
javascript中的location.href有非常多种使用方法,主要例如以下. self.location.href="/url" 当前页面打开URL页面 location. ...