删除Sketchup.active_model.shadow_info上的所有观察者

时间:2015-08-24 07:40:25

标签: ruby sketchup

有没有办法删除所有收听Sketchup.active_model.shadow_info的观察者?

类似于Sketchup.active_model.shadow_info.remove_all_observers()

1 个答案:

答案 0 :(得分:1)

我不敢。如果可能,您将删除其他扩展的观察者,并导致这些扩展的各种问题。

我猜这是为了方便开发时?你有时最终会添加多个观察者吗?

我使用的模式是始终保持对我附加的观察者实例的引用,然后使用包装器函数在再次附加之前尝试将其删除。

module Example

  def.attach_shadow_observer
    model = Sketchup.active_model
    model.shadow_info.remove_observer(@shadow_observer) if @shadow_observer
    @shadow_observer = MyShadowObserver.new
    model.shadow_info.add_observer(@shadow_observer)
  end

end

这是一个非常天真和简单的例子。您可能会发现创建一个管理器很方便,可以避免为每个附加的观察者创建特定的方法。