【发布时间】:2015-08-24 07:40:25
【问题描述】:
有没有办法删除所有收听Sketchup.active_model.shadow_info的观察者?
类似Sketchup.active_model.shadow_info.remove_all_observers()
【问题讨论】:
有没有办法删除所有收听Sketchup.active_model.shadow_info的观察者?
类似Sketchup.active_model.shadow_info.remove_all_observers()
【问题讨论】:
恐怕不会。如果可能的话,您将删除其他扩展的观察者并导致这些扩展出现各种问题。
我猜这是为了方便开发?您有时会在哪里添加多个观察者?
我使用的模式是始终保留对我附加的观察者实例的引用,然后有一个包装函数尝试在再次附加之前将其删除。
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
这是一个非常幼稚和简单的例子。您可能会发现创建一个管理器很方便,这样您就不必为您附加的每个观察者创建特定的方法。
【讨论】: