|
|||||
|
対象: クラスの終了処理(ファイナライザ)ファイナライザを用いることによって、C++のデストラクタのようにクラスの終了処理を書くことができる。 ObjectSpace.define_finalizerメソッドでファイナライザを登録することができる。クラスではinitializeメソッドの中でこの処理を行う。
class FinalizerTest
def finalize
proc {
print "finalize called\n"
}
end
def wait
print "wait 5 seconds ...\n"
sleep 5
print "done\n"
end
def initialize
print "initialize called\n"
ObjectSpace.define_finalizer(self, finalize)
end
end
ft = FinalizerTest.new
ft.wait
これを実行するとFinalizerTestクラスのinitializeメソッドが呼ばれ、waitメソッドで5秒スリープした後、このオブジェクトがGCされるときにinitializeメソッドで登録したファイナライザが呼ばれている。 initialize called wait 5 seconds ... done finalize called (2010/03/29)
Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]
|
|||||