Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > weakrefライブラリ > WeakRefクラス

class WeakRef + Delegator

クラスの継承リスト: WeakRef < Delegator < Object < Kernel

要約

weak reference を実現するクラスです。

WeakRef オブジェクトは与えられたオブジェクトをポイントしますが、 ポイント先のオブジェクトは GC される可能性があります。 アクセスしようとしたときにオブジェクトが GC されていれば WeakRef::RefError が発生します。

delegate も参照してください。

サンプルコード

require 'weakref'

foo = Object.new
ref = WeakRef.new(foo)
ref.some_method_of_foo

特異メソッド

new(orig) -> WeakRef

与えられたオブジェクトを使って自身を初期化します。

[PARAM] orig:
任意のオブジェクトを指定します。

インスタンスメソッド

__getobj__ -> object

自身の参照先のオブジェクトを返します。

[EXCEPTION] WeakRef::RefError:
GC 済みのオブジェクトを参照した場合に発生します。

[SEE_ALSO] delegate

__getobj__ -> object

委譲先のオブジェクトを返します。

本メソッドは、サブクラスで再定義する必要があり、 デフォルトでは NotImplementedError が発生します。

[EXCEPTION] NotImplementedError:
サブクラスにて本メソッドが再定義されていない場合に発生します。
__setobj__(obj) -> ()

与えられたオブジェクトを自身の参照先としてセットします。 内部用のメソッドなので使わないでください。

[PARAM] obj:
任意のオブジェクトを指定します。
marshal_dump -> object

シリアライゼーションをサポートするためにDelegator#__getobj__ が返すオブジェクトを返します。

marshal_load(obj) -> object

シリアライズされたオブジェクトから、Delegator#__getobj__ が返すオブジェクトを再現します。

[PARAM] obj:
Delegator#marshal_dumpの戻り値のコピー
method_missing(m, *args) -> object

渡されたメソッド名と引数を使って、Delegator#__getobj__ が返すオブジェクトへメソッド委譲を行います。

[PARAM] m:
メソッドの名前(シンボル)
[PARAM] args:
メソッドに渡された引数
[RETURN]
委譲先のメソッドからの返り値

[SEE_ALSO] Object#method_missing

respond_to?(m) -> bool

Delegator#__getobj__ が返すオブジェクトが メソッド m を持つとき真を返します。

[PARAM] m:
メソッド名

[SEE_ALSO] Object#respond_to?

weakref_alive? -> bool

参照先のオブジェクトがまだ生きていれば真を返します。 GC されていれば偽を返します。

定数

IgnoreBacktracePat -> Regexp

バックトレースで無視するパターンを返します。

class WeakRef