対象:
CRuby
JRuby

クラスの終了処理(ファイナライザ)

ファイナライザを用いることによって、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)

新着情報
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)
【iOS Objective-C, Swift Tips】ウィンドウの階層構造を3D表示する(Swift)

Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]