设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2231|回复: 7
打印 上一主题 下一主题

[已经解决] 把变量同时变为两个对象的实例,其值不会消失?

[复制链接]

Lv1.梦旅人

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
帖子
2065
跳转到指定楼层
1
发表于 2013-8-31 23:52:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. class A < Window_Base
  2.   def initialize(x,y,k,z)
  3.     super(x,y,k,z)
  4.   end
  5. end
  6. class B
  7. end
  8. a = A.new(25,25,25,25)
  9. a = B.new
复制代码
为什么新建成的窗口还在

点评

因为你没有dispose,显示的cacheWINDOWSKIN还在  发表于 2013-9-1 07:59

Lv1.梦旅人

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
帖子
2065
2
 楼主| 发表于 2013-9-1 10:23:28 | 只看该作者
抱歉,主楼的点评没懂,只能连贴
下面是scene_title中的一句 ,原本的作用是显示标题的背景图片,我略作了修改
  1.     [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new
  2.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  3.     @sprite = Window_Base.new(33,33,33,33)
  4.     @sprite.x = 55
  5.     @sprite.y = 55
  6.     @sprite.width = 60
  7.      Graphics.transition
  8.     loop do
  9.       Graphics.update
  10.     end
复制代码
为什么这里的图片没有消失?按理说 @sprite.bitmap的值此刻已经没有了啊
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

3
发表于 2013-9-1 11:04:01 手机端发表。 | 只看该作者
没有通过dispose释放。
来自:66RPG Windows Phone 8 客户端
来自: WindowsPhone客户端
回复 支持 反对

使用道具 举报

Lv1.梦旅人

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
帖子
2065
4
 楼主| 发表于 2013-9-1 11:17:53 | 只看该作者
myownroc 发表于 2013-9-1 11:04
没有通过dispose释放。
来自:66RPG Windows Phone 8 客户端

我在问1+1=?的加号的含义,你们却告诉了我?=2
我只是想要知道,为什么这里的值消失了,而东西却还在存在
释放了当然就不存在了
可是为什么不释放就存在呢...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

5
发表于 2013-9-1 11:29:33 手机端发表。 | 只看该作者
本帖最后由 myownroc 于 2013-9-1 11:37 编辑
a554187203 发表于 2013-09-01 11:17

我在问1 1=?的加号的含义,你们却告诉了我?=2
我只是想要知道,为什么这里的值消失了,而东西却还在存在
释放了当然就不存在了
可是为什么不释放就存在呢...


前面的部分不像在说我吧。。。
生成实例的时候会占用内存,没有dispose内存就不会释放,那么这个实例就会继续存在。当这个另一种对象赋值给这个实例时,会占用更多的内存,这样就有可能两种东西都出现,不会使前一个"不存在"。也就是说,建立一个实例之后,必须在某个情况下释放该实例:比如点叉关闭game.exe就是强制释放game.exe的内存。

我不知道我这么说是不是对的。。。
来自:66RPG Windows Phone 8 客户端
来自: WindowsPhone客户端

评分

参与人数 1星屑 +140 收起 理由
弗雷德 + 140 认真回答,手机辛苦了。

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
帖子
2065
6
 楼主| 发表于 2013-9-1 11:34:20 | 只看该作者
myownroc 发表于 2013-9-1 11:29
我知道前面的部分不像在说我
生成实例的时候会占用内存,没有dispose内存就不会释放,那么这个实例就会继 ...

嗯哪,对象真是奇怪...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
7
发表于 2013-9-1 12:38:01 | 只看该作者
Sprite,Window等等一些内建类是用C++部分占用内存的,只通过Ruby无法彻底释放,必须用dispose方法
不过我记得一分钟之后GC就把他回收了?你可以用GC.start试试看还在不在

评分

参与人数 1星屑 +84 收起 理由
弗雷德 + 84 我很赞同

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
8
发表于 2013-9-1 13:24:29 | 只看该作者
a = Window_Base.new(0, 0, 100, 100)
a = nil # 把a之前的值覆盖了,原来的a被nil冲走了……
# 但之前的Window还在,只是被冲走了,也没有变量指向那个Window,所以回不来啦~

评分

参与人数 1星屑 +84 收起 理由
弗雷德 + 84 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 18:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表