DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: kaslly
今日帖子: 74
在线用户: 26
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017/6/23 12:08:33
标题:
FMX 中,什么地方用 Free,什么地方用 DisposOf? 浏览:1043
加入我的收藏
楼主: 按照网友建议,把代码中所有的Free换成DisposOf,不知道有没有什么隐患?我发现在安卓中,关闭程序时,有一定几率会发生无响应,不知道与此有没有关系?看看Delphi自带例程,大部分还是用Free,偶尔用一下DisposOf..
----------------------------------------------
http://mcool.appinn.me/
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2017/6/23 12:24:04
1楼: 假设 arc 关闭,都用 free
假设 arc 开启,你不要了,别人要的,请 free
你不要了,也不想别人要的,请 DisposOf,但是极有可能被引用而依然无法销毁。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 delphiilove (TatukGIS) ▲▲▲▲▲ -
普通会员
2017/6/23 12:27:28
2楼: 用 Free 不起作用的时候 用 DisposOf。
比如动态删除 控件 时,用 DisposOf。
----------------------------------------------
GOD with US
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017/6/23 13:09:31
3楼: 是不是在 FormDestroy 里面,用 Free 无忧?
----------------------------------------------
http://mcool.appinn.me/
作者:
男 lsh341999 (虫子) ▲▲▲△△ -
注册会员
2017/6/23 15:41:57
4楼: DELPHI的释放真是混乱
Free
DisposOf
FreeAndNil
好几种
----------------------------------------------
就怕想不到,没有做不到的
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2017/6/23 15:45:47
5楼: FreeAndNil 就是 A.free; A := nil; 的简化而已。
要不是 ARC ,要不是讨好 java 开发,要狗屁的 DisposOf

其实,完全可以不要 DisposOf ,Free 代替就行。
Emb 也不知那个领导疯了,非要搞个新的。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2017/6/24 11:38:01
6楼: 开着arc的时候Free就是啥也不做.
没开arc的时候DisposeOf就是Free.
所以尽量用DisposeOf,PC和移动平台通吃.
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2017/6/26 11:43:09
7楼: 不明白为什么要搞个DisposeOf,唉,落伍了我……
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 偶的生活博客  偶的技术军事博客
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2017/6/26 14:40:07
8楼: 他们搞DisposeOf的意思就是,做个声明,这个资源我不用了,引用计数减一
Free的意思就是释放资源.
但从文字和美学上来讲生命周期资管理的用DisposeOf这个词更合力.
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2017/6/26 14:41:41
9楼: free 既然是释放资源,那么也应该是不要了的意思。引用也应该减一。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017/6/26 16:03:28
10楼: 楼上两位大侠,我用Delphi 10.x开发安卓应用,默认是开启了ARC的吧?那么我在FormDestroy里Free各种东西,它实际会自动释放资源的吧,虽然Free什么也不干(或者干脆不用写Free?)
----------------------------------------------
http://mcool.appinn.me/
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2017/6/26 16:14:39
11楼: 凡是无人引用的对象,自动清理。
但是 全局对象,自然就无法清理,总有一个全局在引用他。
所以,你可以写 全局对象 := nil;  这样,就全局就不引用了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017/6/26 17:57:13
12楼: 综上,在局部用DisposeOf,全局对象在程序关闭时用FreeAndNil,应该是完美的..
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017/6/26 22:21:09
13楼: @FlyingWang 如果有一个匿名线程仍在运行,应该怎样来关闭应用?立即关闭应该不可行(必定卡死),是应该等待线程完成吧?
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017/6/27 10:00:36
14楼: [假设 arc 开启,你不要了,别人要的,请 free] 
[他们搞DisposeOf的意思就是,做个声明,这个资源我不用了,引用计数减一]
对象怎样就会引用计数加一呢?或者对象怎么多人(多处)共用?如堕迷雾。
Windows的DLL还好理解,Load一下,引用计数加一,不用了,就Free一下。

另外,第一句应该不对啊,应该用DisposeOf啊,引用计数减一嘛..我被绕晕了
----------------------------------------------
http://mcool.appinn.me/
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2017/6/27 10:05:29
15楼: DisposeOf 不是引用减一,而是试图叫所有引用都放弃引用。
能不能成功难说。
反正调用者自己是放弃引用了。
A := B
A 和 B 所引用的对象的引用就会加一.
B.DisposeOf 可能 A 和 B 都减一。
B := nil 对象引用减一。

临时变量 当他的生命周期结束的时候,引用会减一。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2017/12/19 14:29:43
16楼: FMX尽量都是DisposeOf,里面会自动判断ARC做不同处理
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 wuxiangyang (wxy) ★☆☆☆☆ -
盒子活跃会员
2017/12/19 14:44:05
17楼: FMX 可以这样封装,非要人工表达,徒增烦恼

procedure free;
begin
  DisposeOf;
end;
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行39.0625毫秒 RSS