有没有办法删除所有收听Sketchup.active_model.shadow_info
的观察者?
类似于Sketchup.active_model.shadow_info.remove_all_observers()
答案 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
这是一个非常天真和简单的例子。您可能会发现创建一个管理器很方便,可以避免为每个附加的观察者创建特定的方法。