查看: 2450|回复: 3

[已经解决] 【提问】自己创建的新类怎么释放

[复制链接]
梦石
0
星屑
50
在线时间
210 小时
注册时间
2012-7-19
回帖
207
发表于 2014-11-4 21:16:13 | 显示全部楼层 |阅读模式

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

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

×
# Q1

# 例如我写了一个 Fly 类

[pre lang="ruby" line="1"]class Fly
  def initialize
  end
end[/pre]

# 然后我该怎么给它定义一个dispose方法用于释放它?

# Q2

# 假如我无论如何也释放不了它,在转场的时候,即Scene切换的时候,这个新类的实例会继续“存在”还是会被回收机制“回收”?

# last

# 谢谢大家的指导和指教!o(∩_∩)o
梦石
0
星屑
2310
在线时间
5539 小时
注册时间
2011-1-10
回帖
6353

青铜编剧史诗剧作家剧作品鉴家

发表于 2014-11-4 22:21:35 | 显示全部楼层
本帖最后由 H·H·Y 于 2014-11-4 22:29 编辑

Q1:
class Fly
  def dispose
    p "A"
  end
end
var = Fly.new
var.disoose
这样就可以了吧?

Q2:
如果是这样
var = Fly.new
var = Tone.new(0, 0, 0, 0)
的话,ABC就变成Tone的实例了吧……

我脚本渣……

点评

我的意思是怎么在dispose里写释放当前类的实例的内容?比如我@fly = Fly.new,然后在使用完后怎么释放它  发表于 2014-11-6 14:18
def dispose换行之后一直到end之前的脚本就是方法内容吧。像上边的p "A"就是dispose方法的内容……  发表于 2014-11-6 13:28
可是dispose内容该怎么写? 谢谢!  发表于 2014-11-6 13:26
谢谢!  发表于 2014-11-6 13:24
def dispose不就是对dispose方法进行定义么_(:з」∠)_虽然我不知道XP跟VA的区别,  发表于 2014-11-6 13:22
回复

使用道具 举报

梦石
0
星屑
50
在线时间
269 小时
注册时间
2014-5-9
回帖
124

开拓者

发表于 2014-11-4 22:29:04 | 显示全部楼层
bitmap,精灵和viewport才需要考虑释放

点评

谢谢!  发表于 2014-11-6 23:41
是的  发表于 2014-11-6 14:49
谢谢!  发表于 2014-11-6 13:24
新定义的类(假设是@fly=Fly.new)里,有sprite和bitmap,是不是只要把新定义的类里的sprite和bitmap释放了就可以不用管这个@fly实例了?  发表于 2014-11-6 13:19
我是指父类Window……也就是Window_Base的释放里的super……  发表于 2014-11-5 11:26

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-5 15:47:27 | 显示全部楼层
1. 除非你主动申请了内存(也就是塞了几个Sprite当成实例变量之类的),否则不需要显式定义析构函数
如果一定要定义自己的析构函数的话,可以使用 ObjectSpace.define_finalizer 方法,详情参见 Ruby 文档。

2. 只要这个对象不被任何东西引用(也就是你怎么弄都获得不了这个对象),那么该对象就会被回收。

点评

谢谢!  发表于 2014-11-6 23:35
是的  发表于 2014-11-6 17:12
谢谢!  发表于 2014-11-6 13:23
你好。我在新的类里添加了Sprite和Bitmap对象,是不是只要把这个类的实例对象中的Sprite和Bitmap释放了,这个实例对象就可以放任不管了?  发表于 2014-11-6 13:23

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部