class WeakRef

弱引用类,允许被引用的对象被垃圾回收。

WeakRef 的使用方式与其引用的对象完全相同。

用法

foo = Object.new            # create a new object instance
p foo.to_s                  # original's class
foo = WeakRef.new(foo)      # reassign foo with WeakRef instance
p foo.to_s                  # should be same class
GC.start                    # start the garbage collector
p foo.to_s                  # should raise exception (recycled)

常量

VERSION

公共类方法

new(orig) 点击切换源代码

创建对 orig 的弱引用

调用父类方法
# File weakref.rb, line 34
def initialize(orig)
  case orig
  when true, false, nil
    @delegate_sd_obj = orig
  else
    @@__map[self] = orig
  end
  super
end

公共实例方法

weakref_alive?() 点击切换源代码

如果被引用的对象仍然存活,则返回 true。

# File weakref.rb, line 55
def weakref_alive?
  @@__map.key?(self) or defined?(@delegate_sd_obj)
end