分享

FMX中,什么地方用Free,什么地方用DisposOf

 quasiceo 2017-06-27
标题:
FMX 中,什么地方用 Free,什么地方用 DisposOf? 浏览:383
加入我的收藏
楼主: 按照网友建议,把代码中所有的Free换成DisposOf,不知道有没有什么隐患?我发现在安卓中,关闭程序时,有一定几率会发生无响应,不知道与此有没有关系?看看Delphi自带例程,大部分还是用Free,偶尔用一下DisposOf..
----------------------------------------------
http://mcool./

作者:
男 wang_80919 (Flying Wang) ▲▲▲▲△ -
普通会员
2017-6-23 12:24:04
1楼: 假设 arc 关闭,都用 free
假设 arc 开启,你不要了,别人要的,请 free
你不要了,也不想别人要的,请 DisposOf,但是极有可能被引用而依然无法销毁。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 delphiilove (箭候) ▲▲▲▲▲ -
普通会员
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./
作者:
男 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.
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2017-6-26 11:43:09
7楼: 不明白为什么要搞个DisposeOf,唉,落伍了我……
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 偶的生活博客  偶的技术军事博客
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2017-6-26 14:40:07
8楼: 他们搞DisposeOf的意思就是,做个声明,这个资源我不用了,引用计数减一
Free的意思就是释放资源.
但从文字和美学上来讲生命周期资管理的用DisposeOf这个词更合力.
----------------------------------------------
武稀松http://www.
作者:
男 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./
作者:
男 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./
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017-6-26 22:21:09
13楼: @FlyingWang 如果有一个匿名线程仍在运行,应该怎样来关闭应用?立即关闭应该不可行(必定卡死),是应该等待线程完成吧?
----------------------------------------------
http://mcool./
作者:
男 diystar (diystar) ▲▲▲▲△ -
普通会员
2017-6-27 10:00:36
14楼: [假设 arc 开启,你不要了,别人要的,请 free] 
[他们搞DisposeOf的意思就是,做个声明,这个资源我不用了,引用计数减一]
对象怎样就会引用计数加一呢?或者对象怎么多人(多处)共用?如堕迷雾。
Windows的DLL还好理解,Load一下,引用计数加一,不用了,就Free一下。

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

临时变量 当他的生命周期结束的时候,引用会减一。
-----------------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多